ArrayList的交集,差集,並集,去重並集
阿新 • • 發佈:2019-01-25
//建立兩個ArrayList並新增元素 List<Integer> list1 = new ArrayList<Integer>(); list1.add(1); list1.add(2); list1.add(3); list1.add(4); List<Integer> list2 = new ArrayList<Integer>(); list2.add(3); list2.add(4); list2.add(5); list2.add(6);
判斷交集:
list2.retainAll(list1);
if(list1.size()>0){
System.out.println("存在交集");
}
retainAll()方法通過檢測list1的大小,大小改變返回true(沒有交集返回true),大小不變返回false(兩集合相同返回false)。不能通過true或false確定是否存在交集,只能通過list1.seze()判斷。
輸出交集:可以通過雙重for迴圈把相同結果輸出;下面使用了set去重。
//用set去重特點求交集 HashSet<Integer> hashSet=new HashSet<Integer>(); //list3儲存交集 List<Integer> list3 = new ArrayList<Integer>(); for (Integer i:list1 ) { hashSet.add(i); } for (Integer i:list2 ) { if(hashSet.add(i)==false){//add失敗則認為有相同元素,存放到list3 list3.add(i); } } System.out.println(list3);
差集:
// 差集,屬於list1而不屬於list2
list1.removeAll(list2);
System.out.println("差集:"+list1);
並集:
// 並集
list1.addAll(list2);
System.out.println("並集:"+list1);
去重並集:
// 無重複並集 list2.removeAll(list1); list1.addAll(list2); for (Integer i : list1) { System.out.println(i); }