我不知道如何最好地描述我的问题,但是在这里,我正在尝试从中删除相同的名称(值) HashMap<String, String> map = new HashMap<String, String>();
例如,如果此地图包含类似
map.put("Vivaldi","Antonio");
map.put("Belucci", "Monica");
map.put("Gudini", "Harry");
map.put("Verdo", "Dhuzeppe");
map.put("Maracci", "Bruno");
map.put("Carleone", "Vito");
map.put("Bracco", "Luka");
map.put("Stradivari", "Antonio");
我想通过使用method方法从其中删除所有值为“ Antonio”的条目removeTheFirstNameDuplicates
,我在Google中搜索了几天,所有示例都接近于我想要的,但并不是我真正需要的。
我的想法是,我需要检查地图的内容,如果其中包含相同的值,则删除重复的内容。但是我该怎么办呢?
您可以使用以下方法进行此操作,该方法仅对地图进行一次迭代:
private static void removeTheFirstNameDuplicates(final Map<String, String> map) {
final Iterator<Entry<String, String>> iter = map.entrySet().iterator();
final HashSet<String> valueSet = new HashSet<String>();
while (iter.hasNext()) {
final Entry<String, String> next = iter.next();
if (!valueSet.add(next.getValue())) {
iter.remove();
}
}
}
在add()
对方法HashSet
会返回false
一个值已被添加到组。上面的方法使用此方法检测到已找到重复项,然后HashMap
使用remove()
迭代器上的方法从中删除重复项。
值得注意的是,根据Map
您使用的实现方式,可能无法保证迭代顺序,因此也不能保证您删除了哪个重复项。
如果您使用aTreeMap
而不是a HashMap
,那么一定要按字母顺序对地图进行迭代,例如Berluccio,Bracco,Carleone…Verdo。然后,您将始终保留Stradivari并删除Vivaldi。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句