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不会)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)