This is an automated email from the ASF dual-hosted git repository. ggregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-collections.git
commit bfede0ea47eacb2e9787b2d98dce4216c304bf46 Author: Gary Gregory <garydgreg...@gmail.com> AuthorDate: Mon Aug 2 13:41:20 2021 -0400 Add ListUtils.getFirst() and getLast(). --- src/changes/changes.xml | 3 +++ .../org/apache/commons/collections4/ListUtils.java | 30 ++++++++++++++++++++++ .../apache/commons/collections4/ListUtilsTest.java | 14 ++++++++++ 3 files changed, 47 insertions(+) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 4667ae8..b664e7b 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -107,6 +107,9 @@ <action issue="COLLECTIONS-674" dev="ggregory" type="add" due-to="dota17"> Add CollectionUtils removeRange, removeCount #91. </action> + <action dev="ggregory" type="add" due-to="Gary Gregory"> + Add ListUtils.getFirst() and getLast(). + </action> <!-- UPDATE --> <action type="update" dev="kinow" due-to="Dependabot"> Bump actions/setup-java from v1.4.0 to v2 #174 #177 #186 #224. diff --git a/src/main/java/org/apache/commons/collections4/ListUtils.java b/src/main/java/org/apache/commons/collections4/ListUtils.java index e8c3d8a..e8cec45 100644 --- a/src/main/java/org/apache/commons/collections4/ListUtils.java +++ b/src/main/java/org/apache/commons/collections4/ListUtils.java @@ -175,6 +175,36 @@ public class ListUtils { } /** + * Gets the first element of a list. + * <p> + * Shorthand for {@code list.get(0)} + * </p> + * @param <T> The list type. + * @param list The list + * @return the first element of a list. + * @see List#get(int) + * @since 4.5 + */ + public static <T> T getFirst(List<T> list) { + return Objects.requireNonNull(list, "list").get(0); + } + + /** + * Gets the last element of a list. + * <p> + * Shorthand for {@code list.get(list.size() - 1)} + * </p> + * @param <T> The list type. + * @param list The list + * @return the last element of a list. + * @see List#get(int) + * @since 4.5 + */ + public static <T> T getLast(List<T> list) { + return Objects.requireNonNull(list, "list").get(list.size() - 1); + } + + /** * Generates a hash code using the algorithm specified in * {@link java.util.List#hashCode()}. * <p> diff --git a/src/test/java/org/apache/commons/collections4/ListUtilsTest.java b/src/test/java/org/apache/commons/collections4/ListUtilsTest.java index 11ccd02..59d6860 100644 --- a/src/test/java/org/apache/commons/collections4/ListUtilsTest.java +++ b/src/test/java/org/apache/commons/collections4/ListUtilsTest.java @@ -55,6 +55,20 @@ public class ListUtilsTest { } @Test + public void testGetFirst() { + assertEquals(a, ListUtils.getFirst(fullList)); + assertThrows(NullPointerException.class, () -> ListUtils.getFirst(null)); + assertThrows(IndexOutOfBoundsException.class, () -> ListUtils.getFirst(new ArrayList<>())); + } + + @Test + public void testGetLast() { + assertEquals(e, ListUtils.getLast(fullList)); + assertThrows(NullPointerException.class, () -> ListUtils.getFirst(null)); + assertThrows(IndexOutOfBoundsException.class, () -> ListUtils.getFirst(new ArrayList<>())); + } + + @Test public void testDefaultIfNull() { assertTrue(ListUtils.defaultIfNull(null, Collections.emptyList()).isEmpty());