java中关于取两个集合交集的retainAll方法 1、是不是两个集合要完全相同? 2、retainAll方法的原理是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中关于取两个集合交集的retainAll方法 1、是不是两个集合要完全相同? 2、retainAll方法的原理是啥?相关的知识,希望对你有一定的参考价值。

它的原理事实上是否也是两个集合做遍历呢,那跟我自己写遍历取交集有什么不同?

参考技术A 如果我估计没错的话,2个集合取交集,也是就取其中对象是否相等,应该重写了hashcode和equel方法 参考技术B 移除此 set 中所有未包含在指定 collection 中的元素。如果指定的 collection 也是一个 set,则此操作会实际修改此 set,这样其值是两个 set 的一个交集。

removes from this set all of its elements that are not contained in the specified collection. If the specified collection is also a set, this operation effectively modifies this set so that its value is the intersection of the two sets.
参考技术C 打开源代码看看就行了本回答被提问者采纳

用java编写程序,求集合的并集、交集和差集

有集合A=1,2,3,4和B=1,3,7,9,11, 编写一个应用程序输出A和B交集、并集和差集
解题思路:
 并集是指两个集合合并,但是去掉重复的元素的集合。可以使用HashSet类的addAll的方法将两个集合合并
 交集是指两个集合中都有的元素组成的集合,可以使用HashSet类的retainAll的方法得到两个集合的交集
 差集是指属于A集合但是不属于B集合的元素组成的集合

参考技术A public static void  main(String[] args) 
     Integer[] A = 1,2,3,4;
     Integer[] B = 1,3,7,9,11;
    
     List<Integer> listA = Arrays.asList(A);
     List<Integer> listB = Arrays.asList(B);
    
     List<Integer> jiaoji = new ArrayList<Integer>();
     for(Integer a:listA)
     if(listB.contains(a))
     jiaoji.add(a);
    
    
     System.out.println(jiaoji);
     List<Integer> bingji = new ArrayList<Integer>();
     for(Integer a:listA)
     if(!bingji.contains(a))
     bingji.add(a);
    
    
     for(Integer b:listB)
     if(!bingji.contains(b))
     bingji.add(b);
    
    
    
     System.out.println(bingji);
    
     List<Integer> chaji = new ArrayList<Integer>();
     for(Integer a:listA)
     if(!listB.contains(a))
     chaji.add(a);
    
    
     System.out.println(chaji);
    

参考技术B package yeyu;

import java.util.ArrayList;

public class Jiaoji

/**
* @param args
*/
public static void main(String[] args)
// TODO Auto-generated method stub
ArrayList<Integer> list=new ArrayList<Integer>();
ArrayList<Integer> list2=new ArrayList<Integer>();
ArrayList<Integer> list3=new ArrayList<Integer>();
list.add(1);
list.add(2);
list2.add(1);
list2.add(2);
list2.add(3);
list2.add(4);
for (int i = 0; i < list.size(); i++)
for (int j = 0; j < list2.size(); j++)
if(list.get(i)==list2.get(j)||list.get(i).equals(list2.get(j)))
list3.add(list.get(i));



for (int i = 0; i < list3.size(); i++)
System.out.println(list3.get(i));




参考技术C

package java6;

import java.util.*;

public class Test7_4

public static void main(String[] args)

// TODO Auto-generated method stub

Integer[] A = 1,2,3,4;

Integer[] B = 1,3,7,9,11;

List<Integer> listA = Arrays.asList(A);

List<Integer> listB = Arrays.asList(B);

List<Integer> jiaoji = new ArrayList<Integer>();

for(Integer a:listA)

if(listB.contains(a))

jiaoji.add(a);

System.out.println(jiaoji);

List<Integer> bingji = new ArrayList<Integer>();

for(Integer a:listA)

if(!bingji.contains(a))

bingji.add(a);

for(Integer b:listB)

if(!bingji.contains(b))

bingji.add(b);


参考技术D 什么意思,你都把思路写出来了啊

以上是关于java中关于取两个集合交集的retainAll方法 1、是不是两个集合要完全相同? 2、retainAll方法的原理是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Java里面如何求两个集合的交集

请问java有工具类取两个list的并集吗?

用java编写程序,求集合的并集、交集和差集

java找到两个list的交集并集差集

Java大集合求交集的方法比较

Java 学习笔记 - 集合运算