修改CollUtil.union等方法泛型,使其支持多种子类union一个父类集合

This commit is contained in:
敢敢
2023-06-27 15:42:33 +08:00
parent 66f1d50704
commit 8c50bc829c
3 changed files with 50 additions and 6 deletions

View File

@@ -1110,6 +1110,26 @@ public class CollUtilTest {
}
}
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@Data
static class Cat extends Animal {
public Cat(String name, Integer age) {
super(name, age);
}
}
@ToString(callSuper = true)
@EqualsAndHashCode(callSuper = true)
@Data
static class Pig extends Animal {
public Pig(String name, Integer age) {
super(name, age);
}
}
@Test
public void getFirstTest() {
Assertions.assertNull(CollUtil.getFirst(null));
@@ -1181,4 +1201,27 @@ public class CollUtilTest {
public void minNullTest() {
Assertions.assertNull(CollUtil.max(null));
}
@Test
public void unionExtendTest() {
List<Dog> dog = Arrays.asList(new Dog("dog1", 12), new Dog("dog2", 12));
List<Cat> cat = Arrays.asList(new Cat("cat1", 12), new Cat("cat2", 12));
Assertions.assertEquals(CollUtil.union(dog, cat).size(), dog.size() + cat.size());
}
@Test
public void unionAllExtendTest() {
List<Dog> dog = Arrays.asList(new Dog("dog1", 12), new Dog("dog2", 12));
List<Cat> cat = Arrays.asList(new Cat("cat1", 12), new Cat("cat2", 12));
List<Pig> pig = Arrays.asList(new Pig("pig1", 12), new Pig("pig2", 12));
Assertions.assertEquals(CollUtil.unionAll(dog, cat, pig).size(), dog.size() + cat.size() + pig.size());
}
@Test
public void unionDistinctExtendTest() {
List<Dog> dog = Arrays.asList(new Dog("dog1", 12), new Dog("dog1", 12)); // same
List<Cat> cat = Arrays.asList(new Cat("cat1", 12), new Cat("cat2", 12));
List<Pig> pig = Arrays.asList(new Pig("pig1", 12), new Pig("pig2", 12));
Assertions.assertEquals(CollUtil.unionDistinct(dog, cat, pig).size(), 5);
}
}