diff --git a/09-java-generics-collections/task01/src/com/example/task01/Pair.java b/09-java-generics-collections/task01/src/com/example/task01/Pair.java index 6b36a5df4..e16f5dde9 100644 --- a/09-java-generics-collections/task01/src/com/example/task01/Pair.java +++ b/09-java-generics-collections/task01/src/com/example/task01/Pair.java @@ -2,4 +2,64 @@ public class Pair { // TODO напишите реализацию -} +import java.util.function.BiConsumer; + + public class Pair + { + private final T first; + private final U second; + + private Pair(T first, U second) + { + this.first = first; + this.second = second; + } + + public U getSecond() + { + //тест падает на null + //throw new NoSuchElementException("No second value present"); + return second; + } + + public T getFirst() + { + //тест падает на null + //throw new NoSuchElementException("No first value present"); + return first; + } + + public void ifPresent(BiConsumer consumer) + { + if (first != null && second != null) { + consumer.accept(first, second); + } + } + + @Override + public boolean equals(Object obj) + { + if (obj == this) + { + return true; + } + if (obj == null || obj.getClass() != this.getClass()) + { + return false; + } + Pair tmp = (Pair) obj; + return (first == tmp.getFirst() || (first != null && tmp.getSecond().equals(tmp.getFirst()))) + && (second == tmp.getSecond() || (second != null && second.equals(tmp.getSecond()))); + } + + @Override + public int hashCode() + { + return (first == null ? 0 : first.hashCode()) ^ (second == null ? 0 : second.hashCode()); + } + + public static Pair of(T first, U second) + { + return new Pair<>(first, second); + } + } \ No newline at end of file