中国建设银行手机网站,上海进出口贸易博览会,电商网站前端源码,山西工程建设招标网1 明确概念首先知道几个单词的意思#xff1a;并集 union交集 intersection补集 complement析取 disjunction减去 subtract1.1 并集对于两个给定集合A、B#xff0c;由两个集合所有元素构成的集合#xff0c;叫做A和B的并集。记作#xff1a;AUB 读作“A并B”例#…1 明确概念首先知道几个单词的意思并集 union交集 intersection补集 complement析取 disjunction减去 subtract1.1 并集对于两个给定集合A、B由两个集合所有元素构成的集合叫做A和B的并集。记作AUB 读作“A并B”例{3,5}U{2,3,4,6} {2,3,4,5,6}1.2 交集对于两个给定集合A、B由属于A又属于B的所有元素构成的集合叫做A和B的交集。记作 A∩B 读作“A交B”例A{1,2,3,4,5}B{3,4,5,6,8}A∩B{3,4,5}1.3 补集一般地设S是一个集合A是S的一个子集由S中所有不属于A的元素组成的集合叫做子集A在S中的绝对补集。记作∁UA包括三层含义1A是U的一个子集即A⊊U;2∁UA表示一个集合且∁UA⊊U;3∁UA是由U中所有不属于A的元素组成的集合∁UA与A没有公共元素U中的元素分布在这两个集合中。2 使用apache工具包2.1 导入依赖 !-- apache 集合工具类 --dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-collections4/artifactIdversion4.1/version/dependency2.2 代码如下 public static final ListString list1 Arrays.asList(A, B, C, D, E, F, null);public static final ListString list2 Arrays.asList(1, 2, 3, D, E, F, null);/*** apache测试方法*/Testpublic void apacheTest() {System.out.println(交集 CollectionUtils.intersection(list1, list2)); // 交集System.out.println(补集 CollectionUtils.disjunction(list1, list2)); // 补集System.out.println(并集 CollectionUtils.union(list1, list2)); // 并集System.out.println(list1的差集 CollectionUtils.subtract(list1, list2)); // list1的差集System.out.println(list2的差集 CollectionUtils.subtract(list2, list1)); // list2的差集}输出:3 使用hutool工具包3.1 导入依赖 !-- hutool工具类 --dependencygroupIdcn.hutool/groupIdartifactIdhutool-all/artifactIdversion5.8.12/version/dependency3.2 代码如下 public static final ListString list1 Arrays.asList(A, B, C, D, E, F, null);public static final ListString list2 Arrays.asList(1, 2, 3, D, E, F, null);/*** hutool工具类*/Testpublic void hutoolTest() {System.out.println(交集 CollectionUtil.intersection(list1, list2)); // 交集System.out.println(补集 CollectionUtil.disjunction(list1, list2)); // 补集System.out.println(并集 CollectionUtil.union(list1, list2)); //并集System.out.println(list1的差集CollectionUtil.subtract(list1,list2));System.out.println(list2的差集CollectionUtil.subtract(list2,list1));System.out.println(list1的差集 CollectionUtil.subtractToList(list1, list2));System.out.println(list2的差集 CollectionUtil.subtractToList(list2, list1));}输出:3.3 注意subtract()和subtractToList()作用一样不过处理方式不同使用subtract()时参数不能是Arrays.asList()的结果否则会报异常因为Arrays.asList()返回的对象是Arrays.ArrayList在方法实现里面调用的是AbstractList抽象类里面的removeAll()方法该方法代码如下public abstract class AbstractListE extends AbstractCollectionE implements ListE {// ....public E remove(int index) {throw new UnsupportedOperationException();}// ....
}4 使用stream方式4.1 代码如下: public static final ListString list1 Arrays.asList(A, B, C, D, E, F, null);public static final ListString list2 Arrays.asList(1, 2, 3, D, E, F, null);/*** stream方式*/Testpublic void streamTest() {ListObject intersection list1.stream().filter(list2::contains).collect(Collectors.toList());System.out.println(交集 intersection);ListString subtract1 list1.stream().filter(s - !list2.contains(s)).collect(Collectors.toList());System.out.println(集合list1的差集 subtract1);ListString subtract2 list2.stream().filter(s - !list1.contains(s)).collect(Collectors.toList());System.out.println(集合list2的差集 subtract2);ListString union1 list1.parallelStream().collect(Collectors.toList());ListString union2 list2.parallelStream().collect(Collectors.toList());union1.addAll(union2);ListString union3 union1.stream().distinct().collect(Collectors.toList());System.out.println(并集 union3);}
输出:5 使用Collection接口中的方法5.1 代码如下: public static String[] attr1 new String[]{A, B, C, D, E, F, null};public static String[] attr2 new String[]{1, 2, 3, D, E, F, null};/*** 使用Collection接口中的方法*/Testpublic void collectionTest() {ListString list1 new ArrayList(Arrays.asList(attr1));ListString list2 new ArrayList(Arrays.asList(attr2));list1.retainAll(list2);System.out.println(交集 list1);ArrayListString list3 new ArrayList(Arrays.asList(attr1));ArrayListString list4 new ArrayList(Arrays.asList(attr2));SetObject set new HashSet();set.addAll(list3);set.addAll(list4);System.out.println(并集 set);ArrayListString list5 new ArrayList(Arrays.asList(attr1));ArrayListString list6 new ArrayList(Arrays.asList(attr2));list5.removeAll(list6);System.out.println(集合A的差集 list5);ArrayListString list7 new ArrayList(Arrays.asList(attr1));ArrayListString list8 new ArrayList(Arrays.asList(attr2));list8.removeAll(list7);System.out.println(集合B的差集 list8);}输出: