This is an automated email from the ASF dual-hosted git repository. vladimirsitnikov pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/calcite.git
commit 539807bb0558890c2a92d0fc2af20c741a775fbc Author: Vladimir Sitnikov <[email protected]> AuthorDate: Sun Sep 27 18:30:53 2020 +0300 Simplify Pair.left(Iterable) and Pair.right(Iterable) implementation --- .../main/java/org/apache/calcite/util/Pair.java | 80 +++------------------- 1 file changed, 8 insertions(+), 72 deletions(-) diff --git a/core/src/main/java/org/apache/calcite/util/Pair.java b/core/src/main/java/org/apache/calcite/util/Pair.java index 26fa8cf..4c71bf5 100644 --- a/core/src/main/java/org/apache/calcite/util/Pair.java +++ b/core/src/main/java/org/apache/calcite/util/Pair.java @@ -286,8 +286,8 @@ public class Pair<T1, T2> * @return Iterable over the left elements */ public static <L, R> Iterable<L> left( - final Iterable<? extends Map.Entry<L, R>> iterable) { - return () -> new LeftIterator<>(iterable.iterator()); + final Iterable<? extends Map.Entry<? extends L, ? extends R>> iterable) { + return Util.transform(iterable, Map.Entry::getKey); } /** @@ -299,34 +299,18 @@ public class Pair<T1, T2> * @return Iterable over the right elements */ public static <L, R> Iterable<R> right( - final Iterable<? extends Map.Entry<L, R>> iterable) { - return () -> new RightIterator<>(iterable.iterator()); + final Iterable<? extends Map.Entry<? extends L, ? extends R>> iterable) { + return Util.transform(iterable, Map.Entry::getValue); } public static <K, V> List<K> left( - final List<? extends Map.Entry<K, V>> pairs) { - return new AbstractList<K>() { - public K get(int index) { - return pairs.get(index).getKey(); - } - - public int size() { - return pairs.size(); - } - }; + final List<? extends Map.Entry<? extends K, ? extends V>> pairs) { + return Util.transform(pairs, Map.Entry::getKey); } public static <K, V> List<V> right( - final List<? extends Map.Entry<K, V>> pairs) { - return new AbstractList<V>() { - public V get(int index) { - return pairs.get(index).getValue(); - } - - public int size() { - return pairs.size(); - } - }; + final List<? extends Map.Entry<? extends K, ? extends V>> pairs) { + return Util.transform(pairs, Map.Entry::getValue); } /** @@ -369,54 +353,6 @@ public class Pair<T1, T2> }; } - /** Iterator that returns the left field of each pair. - * - * @param <L> Left-hand type - * @param <R> Right-hand type */ - private static class LeftIterator<L, R> implements Iterator<L> { - private final Iterator<? extends Map.Entry<L, R>> iterator; - - LeftIterator(Iterator<? extends Map.Entry<L, R>> iterator) { - this.iterator = Objects.requireNonNull(iterator); - } - - public boolean hasNext() { - return iterator.hasNext(); - } - - public L next() { - return iterator.next().getKey(); - } - - public void remove() { - iterator.remove(); - } - } - - /** Iterator that returns the right field of each pair. - * - * @param <L> Left-hand type - * @param <R> Right-hand type */ - private static class RightIterator<L, R> implements Iterator<R> { - private final Iterator<? extends Map.Entry<L, R>> iterator; - - RightIterator(Iterator<? extends Map.Entry<L, R>> iterator) { - this.iterator = Objects.requireNonNull(iterator); - } - - public boolean hasNext() { - return iterator.hasNext(); - } - - public R next() { - return iterator.next().getValue(); - } - - public void remove() { - iterator.remove(); - } - } - /** Iterator that returns the first element of a collection paired with every * other element. *
