Java-数组集合常见面试题
Posted testerling
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java-数组集合常见面试题相关的知识,希望对你有一定的参考价值。
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要快
以上是关于Java-数组集合常见面试题的主要内容,如果未能解决你的问题,请参考以下文章