首页私人日誌java 取交集方法retainAll的实现

java 取交集方法retainAll的实现

admin 09-23 08:40 146次浏览

java 取交集方法retainAll的实现

java 取交集方法retainAll

有两个集合newCoures和oldCourses,判断这两个集合是否包含相同的对象或元素,

可以使用retainAll方法:

oldCourses.retainAll(newCoures)

如果存在相同元素,oldCourses中仅保留相同的元素。

如果不存在相同元素,oldCourse会变为空。

如果有多个集合oldCourses1、oldCourses2、oldCourses3等,分别与newCourses比较,应该将newCourses统一放在后面,像这样:

oldCourses1.retainAll(newCoures);

oldCourses2.retainAll(newCoures);

oldCourses3.retainAll(newCoures);

public class Test {

public static void main(String[] args) {

List list1 = new ArrayList();

List list2 = new ArrayList();

http:// List list3 = new ArrayList();

for (int i = 0; i < 20; i++) {

list1.add(i+"");

if(i%2 == 0) {

list2.add(i+"");

}

list3.add(i+"@");

}

// list1 与 list2 存在相同元素,list1集合只保留list2中存在的元素

list1.retainAll(list2);

if(list1.isEmpty()) {

System.out.println("不包含");

} else {

http://System.out.println("包含");

}

System.out.println(list1);

// list1 与 list3 不存在相同元素,list1集合变为空

list1.retainAll(list3);

if(list1.isEmpty()) {

System.out.println("不包含");

} else {

System.out.println("包含");

}

System.out.println(list1);

}

}

运行结果如下:

retainall的问题

在调用java中的retainall时遇到个问题

代码如下:

public static ArrayList res_and(ArrayList s1,ArrayList s2)

{

s1.retainAll(s2);

// System.out.println("s1=");

// System.out.println(s1);

return s1;

我定义了一个函数,用来求出s1和s2共有的部分,将其保存在s1中。

但是貌似这么写会导致s1中重复元素会重复出现两次。

解决办法:

在返回前加上一句

s1 = new ArrayList(new HashSet(s1));

即可。

java 取交集方法retainAll的实现
VMware ESXi OpenSLP堆溢出漏洞如何解决 Java Process与Runtime()的使用及调用cmd命令阻塞的解决方案
相关内容