hashmap和arraylist中的类似值

时间:2017-04-08 21:25:11

标签: java arraylist hashmap

我的程序运行正常,但结果却是错误的。我使用HashMap<Integer, ArrayList<Integer>>ArrayList<Integer>,我的程序会生成一个新的HashMap<integer, ArrayList<Integer>>。该计划必须将HashMap中的每个值与ArrayList中的值进行比较,并添加相似的值并将结果存储在新的HashMap中。我添加了一张图片来帮助您理解。

algorithm

示例:

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++;
}

1 个答案:

答案 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;
}