1.[优化]CollUtil部分方法的写法, 希望减少浪费;

2.[修复]CollUtil.lastIndexOf()处理非List类型时的bug;
3.[添加]一些新的测试方法和用例;
This commit is contained in:
Zjp
2022-08-17 17:37:55 +08:00
parent f536f4f47a
commit a937b4cacf
4 changed files with 297 additions and 186 deletions

View File

@@ -29,8 +29,10 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Queue;
import java.util.Set;
import java.util.SortedSet;
import java.util.Stack;
import java.util.function.Function;
/**
@@ -815,8 +817,14 @@ public class CollUtilTest {
public void lastIndexOfTest() {
// List有优化
final ArrayList<String> list = ListUtil.of("a", "b", "c", "c", "a", "b", "d");
final int i = CollUtil.lastIndexOf(list, (str) -> str.charAt(0) == 'c');
Assert.assertEquals(3, i);
final int i = CollUtil.lastIndexOf(list, (str) -> str.charAt(0) == 'a');
Assert.assertEquals(4, i);
final Queue<Integer> set = new ArrayDeque<>(Arrays.asList(1, 2, 3, 3, 2, 1));
Assert.assertEquals(5, CollUtil.lastIndexOf(set, num -> num.equals(1)));
Assert.assertEquals(4, CollUtil.lastIndexOf(set, num -> num.equals(2)));
Assert.assertEquals(3, CollUtil.lastIndexOf(set, num -> num.equals(3)));
Assert.assertEquals(-1, CollUtil.lastIndexOf(set, num -> num.equals(4)));
}
@Test
@@ -1002,6 +1010,11 @@ public class CollUtilTest {
final List<String> list3 = null;
final List<String> list = CollUtil.unionAll(list1, list2, list3);
Assert.assertNotNull(list);
Assert.assertEquals(
ListUtil.of(1, 2, 3, 4),
CollUtil.unionAll(ListUtil.of(1), ListUtil.of(2), ListUtil.of(3), ListUtil.of(4))
);
}
@SuppressWarnings("ConstantConditions")
@@ -1074,4 +1087,52 @@ public class CollUtilTest {
deque.add("4");
Assert.assertEquals("3", CollUtil.getFirst(deque));
}
@Test
public void popPartTest() {
final Stack<Integer> stack = new Stack<>();
for (int i = 0; i < 10; i++) {
stack.push(i);
}
final List<Integer> popPart1 = CollUtil.popPart(stack, 3);
Assert.assertEquals(ListUtil.of(9, 8, 7), popPart1);
Assert.assertEquals(7, stack.size());
final ArrayDeque<Integer> queue = new ArrayDeque<>();
for (int i = 0; i < 10; i++) {
queue.push(i);
}
final List<Integer> popPart2 = CollUtil.popPart(queue, 3);
Assert.assertEquals(ListUtil.of(9, 8, 7), popPart2);
Assert.assertEquals(7, queue.size());
}
@Test
public void isEqualListTest() {
final List<Integer> list = ListUtil.of(1, 2, 3, 4);
Assert.assertTrue(CollUtil.isEqualList(null, null));
Assert.assertTrue(CollUtil.isEqualList(ListUtil.of(), ListUtil.of()));
Assert.assertTrue(CollUtil.isEqualList(list, list));
Assert.assertTrue(CollUtil.isEqualList(list, ListUtil.of(1, 2, 3, 4)));
Assert.assertFalse(CollUtil.isEqualList(null, ListUtil.of()));
Assert.assertFalse(CollUtil.isEqualList(list, ListUtil.of(1, 2, 3, 3)));
Assert.assertFalse(CollUtil.isEqualList(list, ListUtil.of(1, 2, 3)));
Assert.assertFalse(CollUtil.isEqualList(list, ListUtil.of(4, 3, 2, 1)));
}
@Test
public void isEqualsTest() {
final List<Integer> list = ListUtil.of(1, 2, 3, 4);
Assert.assertTrue(CollUtil.isEquals(null, null));
Assert.assertTrue(CollUtil.isEquals(ListUtil.of(), ListUtil.of()));
Assert.assertTrue(CollUtil.isEquals(list, list));
Assert.assertTrue(CollUtil.isEquals(list, ListUtil.of(1, 2, 3, 4)));
Assert.assertTrue(CollUtil.isEquals(list, ListUtil.of(4, 3, 2, 1)));
Assert.assertTrue(CollUtil.isEquals(list, SetUtil.of(4, 3, 2, 1)));
Assert.assertFalse(CollUtil.isEquals(null, ListUtil.of()));
Assert.assertFalse(CollUtil.isEquals(list, ListUtil.of(1, 2, 3, 3)));
Assert.assertFalse(CollUtil.isEquals(list, ListUtil.of(1, 2, 3)));
}
}