diff --git a/task01/src/com/example/task01/Task01Main.java b/task01/src/com/example/task01/Task01Main.java index de4599c1..3feb6afb 100644 --- a/task01/src/com/example/task01/Task01Main.java +++ b/task01/src/com/example/task01/Task01Main.java @@ -23,7 +23,17 @@ public static Function ternaryOperator( Function ifTrue, Function ifFalse) { - return null; // your implementation here + if (condition == null || ifTrue == null || ifFalse == null) { + throw new NullPointerException(); + } + + return obj -> { + if (condition.test(obj)) { + return ifTrue.apply(obj); + } else { + return ifFalse.apply(obj); + } + }; } } diff --git a/task02/src/com/example/task02/Task02Main.java b/task02/src/com/example/task02/Task02Main.java index 309260d8..421749ff 100644 --- a/task02/src/com/example/task02/Task02Main.java +++ b/task02/src/com/example/task02/Task02Main.java @@ -16,7 +16,13 @@ public static void main(String[] args) { public static IntStream cycleGrayCode(int n) { - return null; // your implementation here + if (n < 1 || n > 16) { + throw new IllegalArgumentException("Неверное значение \"n\". Значение должно быть от 1 до 16 включительно."); + } + + int size = 1 << n; + return IntStream.iterate(0, i -> (i + 1) % size) + .map(i -> i ^ (i >> 1)); } diff --git a/task03/src/com/example/task03/Task03Main.java b/task03/src/com/example/task03/Task03Main.java index 254d5cb0..2b444d49 100644 --- a/task03/src/com/example/task03/Task03Main.java +++ b/task03/src/com/example/task03/Task03Main.java @@ -2,7 +2,7 @@ import java.util.Comparator; import java.util.function.BiConsumer; -import java.util.stream.Stream; +import java.util.stream.Stream;import java.util.Iterator; public class Task03Main { @@ -22,6 +22,37 @@ public static void findMinMax( Comparator order, BiConsumer minMaxConsumer) { - // your implementation here + if (stream == null || order == null || minMaxConsumer == null) { + throw new NullPointerException(); + } + + Iterator iterator = stream.iterator(); + + if (!iterator.hasNext()) { + minMaxConsumer.accept(null, null); + return; + } + + T min = null; + T max = null; + + + if (iterator.hasNext()) { + min = iterator.next(); + max = iterator.next(); + + while (iterator.hasNext()) { + T element = iterator.next(); + + if (min == null || order.compare(element, min) < 0) { + min = element; + } + + if (max == null || order.compare(element, max) > 0) { + max = element; + } + } + } + minMaxConsumer.accept(min, max); } } diff --git a/task04/src/com/example/task04/Task04Main.java b/task04/src/com/example/task04/Task04Main.java index 1e38e6eb..b5284be0 100644 --- a/task04/src/com/example/task04/Task04Main.java +++ b/task04/src/com/example/task04/Task04Main.java @@ -1,10 +1,26 @@ package com.example.task04; - +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.util.Collections; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; public class Task04Main { public static void main(String[] args) { - // your implementation here + 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(Map.Entry.comparingByKey()) + .sorted(Map.Entry.comparingByValue(Collections.reverseOrder())) + .limit(10) + .forEach(e -> System.out.print(e.getKey() + "\n")); } diff --git a/task05/src/com/example/task05/IMail.java b/task05/src/com/example/task05/IMail.java new file mode 100644 index 00000000..3d020d85 --- /dev/null +++ b/task05/src/com/example/task05/IMail.java @@ -0,0 +1,7 @@ +package com.example.task05; + +public interface IMail { + String getFrom(); + String getTo(); + T getContent(); +} diff --git a/task05/src/com/example/task05/MailMessage.java b/task05/src/com/example/task05/MailMessage.java new file mode 100644 index 00000000..0a934c6b --- /dev/null +++ b/task05/src/com/example/task05/MailMessage.java @@ -0,0 +1,25 @@ +package com.example.task05; + +public class MailMessage implements IMail { + private String сontent; + private String to; + private String from; + + public MailMessage(String from, String to, String Content) { + this.from = from; + this.to = to; + this.сontent = Content; + } + + public String getContent() { + return сontent; + } + + public String getTo() { + return to; + } + + public String getFrom() { + return from; + } +} diff --git a/task05/src/com/example/task05/MailService.java b/task05/src/com/example/task05/MailService.java new file mode 100644 index 00000000..decc15b7 --- /dev/null +++ b/task05/src/com/example/task05/MailService.java @@ -0,0 +1,26 @@ +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; +import java.util.Collections; + +public class MailService implements Consumer>{ + private final Map> mailBox = new HashMap>() { + @Override + public List get(Object key) { + return super.getOrDefault(key, Collections.emptyList()); + } + }; + + @Override + public void accept(IMail mail) { + mailBox.computeIfAbsent(mail.getTo(), k -> new ArrayList<>()).add(mail.getContent()); + } + + public Map> getMailBox() { + return mailBox; + } +} diff --git a/task05/src/com/example/task05/Salary.java b/task05/src/com/example/task05/Salary.java new file mode 100644 index 00000000..690012ef --- /dev/null +++ b/task05/src/com/example/task05/Salary.java @@ -0,0 +1,25 @@ +package com.example.task05; + +public class Salary implements IMail { + String companyName; + String to; + int salary; + + Salary(String companyName, String name, int salary) { + this.companyName = companyName; + this.to = name; + this.salary = salary; + } + + public String getFrom() { + return companyName; + } + + public String getTo() { + return to; + } + + public Integer getContent() { + return salary; + } +}