java 取交集方法retainAll的实现

网友投稿 513 2022-10-21


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));

即可。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:核心交换机相对于普通交换机的优势
下一篇:web安全入门-icmp测试与防御
相关文章

 发表评论

暂时没有评论,来抢沙发吧~