我的程序运行正常,但结果却是错误的。我使用HashMap<Integer, ArrayList<Integer>>
和ArrayList<Integer>
,我的程序会生成一个新的HashMap<integer, ArrayList<Integer>>
。该计划必须将HashMap
中的每个值与ArrayList
中的值进行比较,并添加相似的值并将结果存储在新的HashMap
中。我添加了一张图片来帮助您理解。
示例:
ArrayList<Integer> :
[1, 0, 1, 0, 0]
Hashmap<Integer,ArrayList<integer>> :
1, [1, 0, 1, 1, 0]
2, [0, 1, 1, 0, 0]
3, [0, 1, 1, 1, 0]
结果:
HashMap
1, 4
2, 3
3, 2
代码:
System.out.println("HASHMAP SIMILIRATE RESULT:");
HashMap<Integer, Integer> sim = new HashMap<Integer, Integer>();
int count;
int k = 1;
for (Map.Entry<Integer, ArrayList<Integer>> e : hmm.entrySet()) {
count = 0;
//you can move this part to another method to avoid deep nested code
for (Integer mapValue : e.getValue()) {
if (mapValue.equals(listOperateur.get(k))) {
count = count + 1;
}
}
sim.put(e.getKey(), count);
k++;
}
答案 0 :(得分:0)
int k = 0; // initiate k with 0
for (Map.Entry<Integer, ArrayList<Integer>> e : hmm.entrySet()) {
count = 0;
//you can move this part to another method to avoid deep nested code
for (Integer mapValue : e.getValue()) {
if (mapValue.equals(listOperateur.get(k++))) {
count = count + 1;
}
}
sim.put(e.getKey(), count);
k=0;
}