gpt4 book ai didi

java - 从 hashmap 列表中消除重复项并计算它们的支持度

转载 作者:行者123 更新时间:2023-12-02 10:26:43 25 4
gpt4 key购买 nike

我有一个列表 itemMap ( Map<ArrayList<String>, Integer> itemMap = new HashMap<ArrayList<String>, Integer>() )包含以下元素

 { [File3, File2]=4, 
[File2, File3]=2,
[File1, File2]=6,
[File1, File3]=2,
[File3, File1]=6,
[File2, File1]=6 }

我想获得一个不包含重复项的列表。 (在我的例子中,重复项是包含另一个列表的相同元素的列表)。示例 (F1,F2) 和 (F2,F1) 在我的工作中是相同的。

所以我想获得以下结果:

{ [File3, File2]=6, 
[File1, File3]=8,
[File1, File2]=12 }

如您所见,我对重复项的计数进行了求和,但我在 HashMap 中保留了其中一个重复项。谁能帮我写一个简单的代码,谢谢。我自己的尝试失败了:

HashMap<List<String>,Integer>   myobjectListB  = new HashMap<List<String>,Integer>();
for (List <String> key : itemMap.keySet()){
for (List <String> y : itemMap.keySet()){
if((key.containsAll(y) && (!key.equals(y))) && (key.size())==y.size()) {
int count = itemMap.get(key)+itemMap.get(y);
myobjectListB.put(key, count);


}

}

}
System.out.println("object list"+ myobjectListB);

}

最佳答案

如果您将 ArrayList 替换为 HashSet,它将按您预期的方式工作。这是因为 Map 接口(interface)只为每个键存储一个值,并且它使用 equals 方法确定两个键是否相等。两个包含相同对象但顺序不同的 ArrayList 在比较时将返回 false,但两个包含相同对象但顺序不同的 HashSet 将返回

关于java - 从 hashmap 列表中消除重复项并计算它们的支持度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53895142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com