Didn’t we just discuss this like a week ago? http://mail.openjdk.java.net/pipermail/core-libs-dev/2014-April/026506.html
On Apr 17, 2014, at 12:30 AM, Otávio Gonçalves de Santana <[email protected]> wrote: > I would to add for news methods on Iterable, I believe it will helpful for > many Java Developers. > > > diff -r 3dd165facde7 test/java/util/Iterator/IteratorDefaults.java > > --- a/test/java/util/Iterator/IteratorDefaults.java Wed Apr 09 12:26:00 > 2014 -0700 > > +++ b/test/java/util/Iterator/IteratorDefaults.java Wed Apr 16 23:25:56 > 2014 -0300 > > @@ -399,6 +399,48 @@ > > } > > } > > > > + public void testgetFirst() { > > + > > + List<Integer> source = Arrays.asList(1, 2, 3, 4); > > + int first = source.getFirst(); > > + assertEquals(first, 1); > > + > > + List<String> emptySource = Collections.<String>emptyList(); > > + assertNull(emptySource.getFirst()); > > + } > > + > > + public void testgetFirstWithDefaultElement() { > > + > > + List<Integer> source = Arrays.asList(1, 2, 3, 4); > > + Integer defaultElement = 5; > > + assertEquals(source.getFirst(defaultElement), Integer.valueOf(1)); > > + > > + List<Integer> emptySource = Collections.<Integer>emptyList(); > > + assertEquals(emptySource.getFirst(defaultElement), defaultElement); > > + > > + } > > + > > + public void testgetLast() { > > + > > + List<Integer> source = Arrays.asList(1, 2, 3, 4); > > + int last = source.getLast(); > > + assertEquals(last, 4); > > + > > + List<String> emptySource = Collections.<String>emptyList(); > > + assertNull(emptySource.getLast()); > > + } > > + > > + public void testgetLastWithDefaultElement() { > > + > > + List<Integer> source = Arrays.asList(1, 2, 3, 4); > > + Integer defaultElement = 5; > > + assertEquals(source.getLast(defaultElement), Integer.valueOf(4)); > > + > > + List<Integer> emptySource = Collections.<Integer>emptyList(); > > + assertEquals(emptySource.getLast(defaultElement), defaultElement); > > + > > + } > > + > > static class IteratorWithRemove implements Iterator { > > > > public boolean removed; > > > > > diff -r 3dd165facde7 src/share/classes/java/lang/Iterable.java > > --- a/src/share/classes/java/lang/Iterable.java Wed Apr 09 12:26:00 2014 > -0700 > > +++ b/src/share/classes/java/lang/Iterable.java Wed Apr 16 23:16:21 2014 > -0300 > > @@ -100,4 +100,55 @@ > > default Spliterator<T> spliterator() { > > return Spliterators.spliteratorUnknownSize(iterator(), 0); > > } > > + > > + > > + /** > > + * returns the first element, if empty will return {@code null} > > + * @return the first element or {@code null} > > + * @since 1.8 > > + */ > > + default T getFirst() { > > + return getFirst(null); > > + } > > + > > + /** > > + * returns the first element, if empty will return the default > > + * @param defaultValue - the default value to return if the iterable > is empty > > + * @return the first element or default element > > + * @since 1.8 > > + */ > > + default T getFirst(T defaultValue) { > > + for (T element : this) { > > + return element; > > + } > > + return defaultValue; > > + } > > + > > + /** > > + * returns the last element, if empty will return {@code null} > > + * @return the first element or {@code null} > > + * @since 1.8 > > + */ > > + default T getLast() { > > + > > + return getLast(null); > > + } > > + > > + /** > > + * returns the last element, if empty will return the default > > + * @param defaultValue - the default value to return if the iterable > is empty > > + * @return the last element or default element > > + * @since 1.8 > > + */ > > + default T getLast(T defaultValue) { > > + > > + T last = null; > > + for (T element : this) { > > + last = element; > > + } > > + if (Objects.isNull(last)) { > > + return defaultValue; > > + } > > + return last; > > + } > > } > > > -- > Atenciosamente. > > Otávio Gonçalves de Santana > > blog: http://otaviosantana.blogspot.com.br/ > twitter: http://twitter.com/otaviojava > site: http://www.otaviojava.com.br > (11) 98255-3513
