1.去重
list去重:
方法一:兩個for 循環:外層循環控制比較輪數,輪數為list長度減去1;內層循環控制每輪比較次數,每輪比較次數為list長度減去當前輪數
for(int i=0;i<list.size()-1;i++){
for(int j=list.size-1;j>i;j--){
if(List.get(j).equals(List.get(i))){
List.remove(j);
}}}
方法二;
jdk1.8后提供List.stream().distinct();
方法三:
使用set對元素進行去重
set元素是無序的,元素不可重復
HashSet set=new HashSet(List);//利用List中的元素創建HashSet集合,此時已經進行了去重操作
List.clear();//清空原來的list
List.add(set);//把去重后的元素重新加入List中
數組去重:
方法一
用List集合實現
int[] str={5,6,6,8,8,7,4};
List<Integer> list=new ArrayList<Integer>();
for(int i=0;i<str.length;i++){
if(!list.contains(str[i]));
list.add(str[i]);
}
}
System.out.println(list);
方法二:
用HashSet:
Set set=new HashSet();
for(int i=0;i<a.length();i++){
set.add(a[i]);
}
2.取交集
list取交集
listA.retainAll(listB)
數組取交集
String[] result_insect=intersect(arr1,arr2);
3.兩個數組取並集
listA.removeAll(listB);//先取兩者的差集,也就是listA去掉公共部分
listA.addAll(listB);然后把ListA中剩余部分追加到ListB中
String[] result_union=union(arr1,arr2);
並集也可以用hashset,把兩個數組遍歷進去
交集:先把數組1放到linkList里面,然后遍歷數組2,如果linkList里面包含數組2中的元素,則將此元素加入進一個新的數組中。
總結:
1.去重用Set
2.linklist插入比ArrayList要快