diff --git a/task01/src/com/example/task01/Task01Main.java b/task01/src/com/example/task01/Task01Main.java index de4599c1..9e4e902e 100644 --- a/task01/src/com/example/task01/Task01Main.java +++ b/task01/src/com/example/task01/Task01Main.java @@ -1,6 +1,7 @@ package com.example.task01; import java.io.IOException; +import java.util.Objects; import java.util.function.Function; import java.util.function.Predicate; @@ -9,12 +10,10 @@ public static void main(String[] args) throws IOException { // TODO С корректно реализованным методом ternaryOperator должен компилироваться и успешно работать следующий код: - /* Predicate condition = Objects::isNull; Function ifTrue = obj -> 0; Function ifFalse = CharSequence::length; Function safeStringLength = ternaryOperator(condition, ifTrue, ifFalse); - */ } @@ -23,7 +22,9 @@ public static Function ternaryOperator( Function ifTrue, Function ifFalse) { - return null; // your implementation here + if (condition == null || ifTrue == null || ifFalse == null) + throw new NullPointerException(); + return t -> condition.test(t) ? ifTrue.apply(t) : ifFalse.apply(t); } } diff --git a/task02/src/com/example/task02/Task02Main.java b/task02/src/com/example/task02/Task02Main.java index 309260d8..b069e2ec 100644 --- a/task02/src/com/example/task02/Task02Main.java +++ b/task02/src/com/example/task02/Task02Main.java @@ -6,17 +6,18 @@ public class Task02Main { public static void main(String[] args) { - /* cycleGrayCode(2) .limit(10) .forEach(System.out::println); - */ } public static IntStream cycleGrayCode(int n) { - return null; // your implementation here + if (n < 1 || n > 16) + throw new IllegalArgumentException(); + return IntStream.iterate(0, a -> a >= Math.pow(2, n) - 1 ? 0 : a + 1) + .map(b -> b ^ (b >> 1)); } diff --git a/task03/src/com/example/task03/Task03Main.java b/task03/src/com/example/task03/Task03Main.java index 254d5cb0..4c61f39c 100644 --- a/task03/src/com/example/task03/Task03Main.java +++ b/task03/src/com/example/task03/Task03Main.java @@ -1,6 +1,7 @@ package com.example.task03; import java.util.Comparator; +import java.util.Iterator; import java.util.function.BiConsumer; import java.util.stream.Stream; @@ -22,6 +23,24 @@ public static void findMinMax( Comparator order, BiConsumer minMaxConsumer) { - // your implementation here + Iterator iterator = stream.iterator(); + + T min = null; + T max = null; + if (iterator.hasNext()){ + min = iterator.next(); + max = min; + } + + while (iterator.hasNext()){ + T currentElement = iterator.next(); + if (order.compare(currentElement,max)>0){ + max = currentElement; + } + if (order.compare(currentElement,min)<0){ + min = currentElement; + } + } + minMaxConsumer.accept(min,max); } } diff --git a/task04/src/com/example/task04/Task04Main.java b/task04/src/com/example/task04/Task04Main.java index 1e38e6eb..b11cca96 100644 --- a/task04/src/com/example/task04/Task04Main.java +++ b/task04/src/com/example/task04/Task04Main.java @@ -1,11 +1,30 @@ package com.example.task04; +import java.io.*; +import java.util.Comparator; +import java.util.Map; +import java.util.function.ToLongFunction; +import java.util.stream.Collectors; +import java.util.stream.Stream; + public class Task04Main { public static void main(String[] args) { - // your implementation here +// System.setIn(new ByteArrayInputStream("Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed sodales consectetur purus at faucibus. Donec mi quam, tempor vel ipsum non, faucibus suscipit massa. Morbi lacinia velit blandit tincidunt efficitur. Vestibulum eget metus imperdiet sapien laoreet faucibus. Nunc eget vehicula mauris, ac auctor lorem. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer vel odio nec mi tempor dignissim.".getBytes())); + BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); + reader.lines() + .map(String::toLowerCase) + .flatMap(x -> Stream.of(x.split("[^a-zа-яё0-9]"))) + .filter(x -> !x.isEmpty()) + .collect(Collectors.groupingBy( x -> x, Collectors.counting())) + .entrySet() + .stream() + .sorted(Comparator.comparingLong((ToLongFunction>) Map.Entry::getValue) + .reversed() + .thenComparing(Map.Entry::getKey)) + .limit(10) + .forEach(t -> System.out.print(t.getKey() + "\n")); } - } diff --git a/task05/src/com/example/task05/InfoKeeper.java b/task05/src/com/example/task05/InfoKeeper.java new file mode 100644 index 00000000..1be55bbf --- /dev/null +++ b/task05/src/com/example/task05/InfoKeeper.java @@ -0,0 +1,17 @@ +package com.example.task05; + +public class InfoKeeper { + private String from; + private String to; + private T content; + + public InfoKeeper(String from, String to, T content) { + this.from = from; + this.to = to; + this.content = content; + } + + public String getFrom () { return from; } + public String getTo () { return to; } + public T getContent () { return content; } +} \ No newline at end of file diff --git a/task05/src/com/example/task05/MailMessage.java b/task05/src/com/example/task05/MailMessage.java new file mode 100644 index 00000000..6911c017 --- /dev/null +++ b/task05/src/com/example/task05/MailMessage.java @@ -0,0 +1,7 @@ +package com.example.task05; + +public class MailMessage extends InfoKeeper { + public MailMessage(String to, String from, String content) { + super(to, from, content); + } +} \ No newline at end of file diff --git a/task05/src/com/example/task05/MailService.java b/task05/src/com/example/task05/MailService.java new file mode 100644 index 00000000..6c40d13f --- /dev/null +++ b/task05/src/com/example/task05/MailService.java @@ -0,0 +1,31 @@ +package com.example.task05; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +public class MailService implements Consumer> { + private final Map> MailBox = new HashMap>(){ + @Override + public List get(Object key) { + List list = super.get(key); + return list != null ? list : new ArrayList<>(); + } + }; + public Map> getMailBox() { + return MailBox; + } + + @Override + public void accept(InfoKeeper baseObjClass){ + if (MailBox.containsKey(baseObjClass.getTo())) { + MailBox.get(baseObjClass.getTo()).add(baseObjClass.getContent()); + } else { + ArrayList arrayList = new ArrayList<>(); + arrayList.add(baseObjClass.getContent()); + MailBox.put(baseObjClass.getTo(), arrayList); + } + } +} \ No newline at end of file diff --git a/task05/src/com/example/task05/Salary.java b/task05/src/com/example/task05/Salary.java new file mode 100644 index 00000000..e5109202 --- /dev/null +++ b/task05/src/com/example/task05/Salary.java @@ -0,0 +1,7 @@ +package com.example.task05; + +public class Salary extends InfoKeeper { + public Salary(String to, String from, int content) { + super(to, from, content); + } +} \ No newline at end of file diff --git a/task05/src/com/example/task05/Task05Main.java b/task05/src/com/example/task05/Task05Main.java index ae31f6bc..68696f56 100644 --- a/task05/src/com/example/task05/Task05Main.java +++ b/task05/src/com/example/task05/Task05Main.java @@ -9,7 +9,6 @@ public class Task05Main { public static void main(String[] args) { - /* // Random variables String randomFrom = "..."; // Некоторая случайная строка. Можете выбрать ее самостоятельно. @@ -88,7 +87,6 @@ public static void main(String[] args) { assert salaries.get(randomTo).equals(Arrays.asList(randomSalary)) : "wrong salaries mailbox content (3)"; - */ }