比较两个list,分别找出相同元素和不同元素。
示例如下:
List<String> list1 = new ArrayList<String>();
list1.add("苹果手机");
list1.add("电脑");
list1.add("苹果");
list1.add("苹果");
List<String> list2 = new ArrayList<String>();
list2.add("华为手机");
list2.add("电脑");
list2.add("苹果");
取出相同元素
- 遍历list1
- 使用list2的contains,判断当前元素是否存在于list1中
- 使用hashset除去list中可能重复的元素
public static List<String> equalList(List<String> list1,List<String> list2 ){
//在这里实现代码:返回两个集合返回相同部分
//使用HashSet去除list中存在的重复部分
HashSet<String> hashSet = new HashSet<>();
//list3用于存储重复部分
List<String> list3 = new ArrayList<>();
//获取开始时间
long start = System.currentTimeMillis();
//当有一个集合为空时,直接返回null;
if(list1==null||list2==null){
return null;
}
for(String str:list1){
if(list2.contains(str)&&hashSet.add(str)){
System.out.println("添加相同部分:"+str);
list3.add(str);
}
}
System.out.println("方法耗时:" + (System.currentTimeMillis() - start) + " 毫秒");
return list3;
}
取出不同元素
存在两个集合为空时,直接返回空
如果为其中一个为空,则直接返回另一个集合
除去上面条件,再进行集合比较元素
public static List<String> differenceList(List<String> list1,List<String> list2 ){
List<String> diff = new ArrayList<String>();
HashSet<String> hashSet = new HashSet<>();
//获取开始时间
long start = System.currentTimeMillis();
if(list1==null&&list2==null){
return null;
}
if(list1==null){
return list2;
}
if(list2==null){
return list1;
}
for(String str:list1){
if(hashSet.add(str)){
diff.add(str);
}
}
for(String str:list2){
if(hashSet.add(str)){
diff.add(str);
}
}
System.out.println("方法耗时:" + (System.currentTimeMillis() - start) + " 毫秒");
return diff;
}