集合区重复 求交集 一直是个问题 碰到好几次了 没有记下来
这次又碰到了希望后面能长点记性
第一次写这个东西 写的挺丑 还请各路大神 见谅
代码奉上 :
<span style="white-space:pre"> </span>/**
* 求交集 去重复
* @mark UcenterMember 任意 自定义的javaBean
* @param task
* @throws Exception
* @return 去除重复的记录
*
*/
public static List<UcenterMember> getIntersection(List<List<UcenterMember>> members) {
int flagIndex = 0;
List<UcenterMember> result = new ArrayList<UcenterMember>();
Map<String, UcenterMember> map = new HashMap<String, UcenterMember>();
int minSize = Integer.MAX_VALUE;
for (int i = 0; i < members.size(); i++) {
int size = members.get(i).size();
if (size < minSize) {
minSize = size;
flagIndex = i;
}
}
if (minSize > 0) {
result = members.get(flagIndex);// 这个是最终的结果集 也是用户数最少的一个
for (int j = 0; j < result.size(); j++) {
UcenterMember member = result.get(j);
map.put(member.getMobile(), member);
}
int index = 0;
while (index < members.size()) {
Map<String, UcenterMember> tempMap = new HashMap<String, UcenterMember>();
if (index != flagIndex) {
List<UcenterMember> memberlist = members.get(index);
for (int i = 0; i < memberlist.size(); i++) {
UcenterMember member = memberlist.get(i);
String mobile = member.getMobile();
if (map.get(mobile) != null) {
tempMap.put(member.getMobile(), member);
}
}
//这个是 重点 !!
map = tempMap;
}
index++;
}
}
result = new ArrayList<UcenterMember>();
Iterator<Entry<String, UcenterMember>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Entry<String, UcenterMember> next = iterator.next();
String key = next.getKey();
UcenterMember ucenterMember = map.get(key);
result.add(ucenterMember);
}
return result;
}