getFirst and getLast on Iterable (original) (raw)
Otávio Gonçalves de Santana otaviopolianasantana at gmail.com
Thu Apr 17 04:30:31 UTC 2014
- Previous message: getFirst and getLast on Iterable
- Next message: getFirst and getLast on Iterable
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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
- Previous message: getFirst and getLast on Iterable
- Next message: getFirst and getLast on Iterable
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]