我有两张地图如下:
@H_301_2@Map<String,Record> sourceRecords;
Map<String,Record> targetRecords;
我想让每个map.i.e的键都不同.
>它显示sourceRecords中可用的映射键,但不显示targetRecords中的映射键.
>它显示targetRecords中可用的映射键,但不显示sourceRecords中的映射键.
我做了如下:
@H_301_2@Set<String> sourceKeysList = new HashSet<String>(sourceRecords.keySet()); Set<String> targetKeysList = new HashSet<String>(targetRecords.keySet()); SetView<String> intersection = Sets.intersection(sourceKeysList,targetKeysList); Iterator it = intersection.iterator(); while (it.hasNext()) { Object object = (Object) it.next(); System.out.println(object.toString()); } SetView<String> difference = Sets.symmetricDifference(sourceKeysList,targetKeysList); ImmutableSet<String> immutableSet = difference.immutableCopy();编辑
@H_301_2@if(sourceKeysList.removeAll(targetKeysList)){ //distinct sourceKeys Iterator<String> it1 = sourceKeysList.iterator(); while (it1.hasNext()) { String id = (String) it1.next(); String resultMessage = "This ID exists in source file but not in target file"; System.out.println(resultMessage); values = createMessageRow(id,resultMessage); result.add(values); } } if(targetKeysList.removeAll(sourceKeysList)){ //distinct targetKeys Iterator<String> it1 = targetKeysList.iterator(); while (it1.hasNext()) { String id = (String) it1.next(); String resultMessage = "This ID exists in target file but not in source file"; System.out.println(resultMessage); values = createMessageRow(id,resultMessage); result.add(values); } }我能够找到公共密钥但不能找到不同的密钥.请帮忙.
解决方法
集也允许您删除元素.
如果生成“帮助”集对你来说不是问题(因为条目太多;那么:
@H_301_2@Set<String> sources = get a copy of all source entries Set<String> targets = get a copy of all source entries然后:
@H_301_2@sources.removeAll(targets) ... leaves only entries in sources that are only in sources,not in target而
@H_301_2@sources.retainAll(targets) ... leaves only entries that are in both sets你可以从这里开始工作……