您的位置:首页 > 其它

求交集的几种方法

2016-05-03 17:57 155 查看
//求两个数组的交集
private static String[] intersect(String[] arr1, String[] arr2) {
Map<String, Boolean> map = new HashMap<String, Boolean>();
LinkedList<String> list = new LinkedList<String>();
for (String str : arr1) {
if (!map.containsKey(str)) {
map.put(str, Boolean.FALSE);
}
}
for (String str : arr2) {
if (map.containsKey(str)) {
map.put(str, Boolean.TRUE);
}
}

for (Map.Entry<String, Boolean> e : map.entrySet()) {
if (e.getValue().equals(Boolean.TRUE)) {
list.add(e.getKey());
}
}

String[] result = {};
return list.toArray(result);
}


//求两个Set集合的交集
Set<Integer> result = new HashSet<Integer>();
Set<Integer> set1 = new HashSet<Integer>(){{
add(1);
add(3);
add(5);
}};

Set<Integer> set2 = new HashSet<Integer>(){{
add(1);
add(2);
add(3);
}};

result.clear();
result.addAll(set1);
result.retainAll(set2);
System.out.println("交集:"+result);

result.clear();
result.addAll(set1);
result.removeAll(set2);
System.out.println("差集:"+result);

result.clear();
result.addAll(set1);
result.addAll(set2);
System.out.println("并集:"+result);


//求两个list集合的交集
List list1 =new ArrayList();
list1.add("1111");
list1.add("2222");
list1.add("3333");

List list2 =new ArrayList();
list2.add("3333");
list2.add("4444");
list2.add("5555");

//并集
//list1.addAll(list2);
//交集
//list1.retainAll(list2);
//差集
//list1.removeAll(list2);
//无重复并集
list2.removeAll(list1);
list1.addAll(list2);

Iterator<String> it=list1.iterator();
while (it.hasNext()) {
System.out.println(it.next());

}

//System.out.println("-----------------------------------\n");
//printStr(list1);


//使用交集工具类
List<Integer> temp_list;

List<Integer> tea_list;

Collection<Integer> intersection = CollectionUtils.intersection(tea_list, temp_list);
if (intersection.size() > 0) {

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: