从ArrayList问题中删除重复项

用户名

我正在尝试使用流行的技术从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保持不变。问题出在哪儿?

尼古拉斯·菲洛托(Nicolas Filotto)

您只需修改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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章