IterUtil当为List时直接获取值

This commit is contained in:
青韵 2022-08-15 22:39:16 +08:00
parent 2f66008d02
commit 1c457414b9
2 changed files with 18 additions and 0 deletions

View File

@ -575,6 +575,11 @@ public class IterUtil {
* @return 第一个元素为空返回{@code null}
*/
public static <T> T getFirst(Iterable<T> iterable) {
if (iterable instanceof List) {
List<T> list = (List<T>) iterable;
return CollUtil.isEmpty(list) ? null: list.get(0);
}
return getFirst(getIter(iterable));
}

View File

@ -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<Object>) null));
Assert.assertNull(IterUtil.getFirst(CollUtil.newArrayList()));
Assert.assertEquals("1", IterUtil.getFirst(CollUtil.newArrayList("1", "2", "3")));
ArrayDeque<String> deque = new ArrayDeque<>();
deque.add("3");
deque.add("4");
Assert.assertEquals("3", IterUtil.getFirst(deque));
}
@Test
public void getFirstNonNullTest(){
final ArrayList<String> strings = CollUtil.newArrayList(null, null, "123", "456", null);