多个集合求交集 代码示例

集合区重复 求交集 一直是个问题 碰到好几次了 没有记下来  
这次又碰到了希望后面能长点记性
第一次写这个东西  写的挺丑 还请各路大神 见谅
代码奉上 :
<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;
	}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值