gpt4 book ai didi

java - 通过执行像retainAll()这样的操作来改变hashmap值

转载 作者:行者123 更新时间:2023-12-02 10:47:07 24 4
gpt4 key购买 nike

String [] keys0 =a.keySet(). toArray (new String[a.size()]);

Map< String , TreeSet <Integer>> Sub_hash=new HashMap< String, TreeSet <Integer>>();


for(ko = 0 ; ko < keys0 . length ; ko ++) {

Set<Integer> so = test.get( keys0[ko] );

System.out.println(""+so);

for(ko1 = ko+1 ; ko1 < keys0.length; ko1++) {

Set<Integer> so1 = test.get( keys0[ko1] );

boolean tr=so1.retainAll(so);

if(tr && so1.size()>=2) {
Sub_hash. put(keys0[ko]+keys0[ko1], (TreeSet<Integer>) so1);

System.out.println(""+Sub_hash.size()+""+Sub_hash);

}
}}

这是我的第二篇文章,我不知道如何整齐地发布,要求是我有一个包含键和值的 HashMap ,我需要将映射中的一个键与映射中的另一个键进行比较并保留值和将结果放入 sub_hash 映射中,但问题是映射的原始值随着方法 keepAll() 更新映射的值而发生变化;但是当迭代到第二个键时,值完全改变,但是比较像这样 2-3,2-4,2-5,2-6,2-7...等等,但是当值发生变化时,结果是完全错误的,因此是否有机会使其保持不变,就像 HashMap 的某些变量final一样。

最佳答案

这是你的问题:

Set<Integer> so1 = test.get( keys0[ko1] );
boolean tr=so1.retainAll(so);

您不想修改test中的值。您想要修改副本:

Set<Integer> so1 = new TreeSet<>(test.get( keys0[ko1] ));
boolean tr=so1.retainAll(so);

关于java - 通过执行像retainAll()这样的操作来改变hashmap值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52467370/

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