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());
 

Reply via email to