我正在尝试使用流行的技术从ArrayLists中删除重复项:
yourList = new ArrayList<String>(new LinkedHashSet<String>(yourList));
它可以工作,但是由于ArrayList在HashMap中,所以出现了问题。
private void removeDuplicate(HashMap<String, ArrayList<LinkedList<String>>> p)
{
//cycle for each entry of HashMap
for(Map.Entry<String, ArrayList<LinkedList<String>>> entry : p.entrySet())
{
ArrayList<LinkedList<String>> partitions = entry.getValue();
partitions = new ArrayList<LinkedList<String>>(new LinkedHashSet<LinkedList<String>>(partitions));
}
}
问题是在那之后,HashMap与以前完全一样!变量分区不再具有重复项,但是整个HashMap保持不变。问题出在哪儿?
您只需修改partitions
仅是局部变量的值,而实际上不修改映射条目的值来更新给定映射条目使用的值Map.Entry#setValue(V value)
for(Map.Entry<String, ArrayList<LinkedList<String>>> entry : p.entrySet()) {
ArrayList<LinkedList<String>> partitions = entry.getValue();
entry.setValue(new ArrayList<>(new LinkedHashSet<>(partitions)));
}
注意:这将删除LinkedList
重复项而不是String
重复项
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句