java中如何取得两个List集合中不相等的值

java中如何取得两个List集合中不相等的值,第1张

aretainAll(b);  // 保留在 b 中也有a中也有的条目,从a中去掉不在集合b中的条目。

aremoveAll(b) ,从a中删除所有在 b中的条目。

两个方法组合起来就知道怎么得到差值。

c  = new ArrayList(a);

cretainAll(b); // 得到  a, b 的交集。

d = new ArrayList(a);

daddAll(b); // 合并 a, b 值到 d 中。

dremoveAll(c); // 去掉交集 c 中的所有条目。留下只出现在a 或 b 中的条目。

一般来说如果你说集合,一般是用 Set 而不是 List 哦,只有 Set 是数学意义上的集合(能保证唯一性的,不存在重复元素)。

import javautilIterator;

import javautilSet;

import javautilTreeSet;

public class MySet {

public static void main(String[] args) {

Set set1 = new TreeSet();

set1add("aa");

set1add("bb");

set1add("CC");

Set set2 = new TreeSet();

set2add("aa");

set2add("eeff");

Set unionSet = MySetunion(set1, set2);

Set intersectionSet = MySetintersection(set1, set2);

printSet(unionSet);

Systemoutprintln("-----------------------------");

printSet(intersectionSet);

}

private static void printSet(Set set) {

Iterator ite = setiterator();

while(itehasNext()){

Systemoutprintln(itenext()toString());

}

}

public static Set union(Set set1, Set set2){

Set set = new TreeSet();

setaddAll(set1);

setaddAll(set2);

return set;

}

public static Set intersection(Set set1, Set set2){

Set set = new TreeSet();

if(set1size() > set2size()){

setaddAll(set2);

}else{

setaddAll(set1);

}

Iterator ite = setiterator();

while(itehasNext()){

Object obj = itenext();

if(!(set1contains(obj) && set2contains(obj))){

setremove(obj);

}

}

return set;

}

}

--------------------------

CC

aa

bb

eeff

-----------------------------

aa

8清空slit,slistclear();

输出list

for(int l : list){Systemoutprintln(l);}

9这个内容太多了,手机手打太慢说下思路。把学生放到list前都需要实例化一下学生实体类(new Student)。或者一个学生一个对象,学生多时明显不适用。学生赋值成绩这个不知道你是实例化学生时赋值的还是后期。如果后期可以遍历list时获取名称。然后赋值。遍历打印参考8。

10你这里都用list就直接用list了

public void retainPrint(List<Integer> l1, List<Integer> l2){

l1retainAll(l2);

if(aisEmpty()){

Systemoutprintln("没有交集");

}else{

for(int l : l1){

Systemoutprintln(l);

}

}

}

Set a = new HashSet();

Set b = new HashSet();

Set c = new HashSet();

caddAll(a);//将a集合注入c

caddAll(b);//将b集合注入c

aretainAll(b);//取a、b集合的交集

cremoveAll(a);//减去他们重复的参数,剩下的参数形成一个新的set C啦

好象List的里retainAll可以完成吧,可以保留相同的元素,将不同的删除,你可以试一下,如果这个不是创建一个新的list,是在原有的list上直接修改。

list1retainAll(list2);

这样处理后,list1就是处理过的。

看成交集了,失败。。。

并集的话直接把两个的数据都放到一个Set集合里就行了

Set set = new HashSet();

setaddAll(list1);

setaddAll(list2);

这样set里保存的数据就是你要的结果

List<Object> list=new ArrayList<Object>();

for(Object o:array1){

if(ArraysasList(array2)contains(o)&&ArraysasList(array3)contains(o)){

listadd(o);

}

}

return listtoArray();

以上就是关于java中如何取得两个List集合中不相等的值全部的内容,包括:java中如何取得两个List集合中不相等的值、java 怎么设计一个set类 然后new两个set对象 进行交集 并集 求代码、java集合问题(主要是8 9 10不会)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9766045.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存