Java中取多个集合的交集和并集

来源:互联网 发布:flyme数据同步助手 编辑:程序博客网 时间:2024/06/05 20:09
//取多个集合的交集
private Set<String> getIntersection(List<List<String>> list ) {
Set<String> set = new HashSet<String>();
int size = list.size();
if(size > 1){
//取集合中的交集
for (int i = 0; i < size; i++) {
int j = i+1;
if(j < size ){
list.get(0).retainAll(list.get(j)); 
if(i == size - 2){
List<String> resultList = list.get(0);
for (String name : resultList) {
set.add(name);
}
}
}
}
}else {
//只有一个集合则不取交集
for (List<String> list2 : list) {
for (String name : list2) {
set.add(name);
}
}
}

return set;

}



// 求多个集合的并集
private Set<String> getUnion(List<List<String>> list) {

Set<String> set = new HashSet<String>();

if(list == null){list = new ArrayList<List<String>>();}

int size = list.size();

if(size > 1){

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

int j = i+1;

if(j < size ){

list.get(0).removeAll(list.get(j)); 

list.get(0).addAll(list.get(j)); 

if(i == size - 2){

List<String> resultList = list.get(0);

for (String name : resultList) {

set.add(name);

}

}

}

}

}else {

//只有一个集合则直接插入结果

for (List<String> list2 : list) {

for (String name : list2) {

set.add(name);

}

}

}

return set;

}

0 0