diff --git a/hutool-core/src/main/java/cn/hutool/core/collection/IterUtil.java b/hutool-core/src/main/java/cn/hutool/core/collection/IterUtil.java index b93048618..3840609db 100755 --- a/hutool-core/src/main/java/cn/hutool/core/collection/IterUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/collection/IterUtil.java @@ -575,6 +575,11 @@ public class IterUtil { * @return 第一个元素,为空返回{@code null} */ public static T getFirst(Iterable iterable) { + if (iterable instanceof List) { + List list = (List) iterable; + return CollUtil.isEmpty(list) ? null: list.get(0); + } + return getFirst(getIter(iterable)); } diff --git a/hutool-core/src/test/java/cn/hutool/core/collection/IterUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/collection/IterUtilTest.java index f9cfb17e9..48ca3e38d 100644 --- a/hutool-core/src/test/java/cn/hutool/core/collection/IterUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/collection/IterUtilTest.java @@ -5,6 +5,7 @@ import lombok.Data; import org.junit.Assert; import org.junit.Test; +import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -20,6 +21,18 @@ import java.util.Map; */ public class IterUtilTest { + @Test + public void getFirst() { + Assert.assertNull(IterUtil.getFirst((Iterable) null)); + Assert.assertNull(IterUtil.getFirst(CollUtil.newArrayList())); + + Assert.assertEquals("1", IterUtil.getFirst(CollUtil.newArrayList("1", "2", "3"))); + ArrayDeque deque = new ArrayDeque<>(); + deque.add("3"); + deque.add("4"); + Assert.assertEquals("3", IterUtil.getFirst(deque)); + } + @Test public void getFirstNonNullTest(){ final ArrayList strings = CollUtil.newArrayList(null, null, "123", "456", null);