我如何预测散列图?

时间:2015-05-22 17:51:25

标签: android loops hashmap

我有一个带有值的散列图:

1 - 18;
1 - 19;
1 - 20;
3 - 21;
3 - 22;
8 - 23;
8 -24;
8 - 25;
11 - 26;

我必须循环它并检查密钥是否等于特定值,这将是一个参数。所以,让我们说我的参数是数字3.它应该归还给我:

21, 22.

谢谢!

1 个答案:

答案 0 :(得分:1)

Map<Integer, Integer> map = ...;

for (Integer key : map.keySet()) {
    // do something
}

或者

Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();
while (entries.hasNext()) {
    Map.Entry<Integer, Integer> entry = entries.next();
    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
编辑:根据你的评论,这就是你需要的东西,只需将它贴在某个地方并观察并稍微玩一下,我试着评论一下这个有意思的sutff

private void hashMapTest() {
    HashMap<Integer, List<Integer>> testMap = new HashMap<>();
    int i; // Iterator

    // ArrayLists that hold the integer values at specific key
    List<Integer> list1 = new ArrayList<>();
    List<Integer> list2 = new ArrayList<>();
    List<Integer> list3 = new ArrayList<>();
    List<Integer> list4 = new ArrayList<>();

    // Fill the lists with some demo data.
    for (i = 0; i < 5; ++i) {
        list1.add(i);
    }

    for (; i < 10; ++i) {
        list2.add(i);
    }

    for (; i < 15; ++i) {
        list3.add(i);
    }

    for (; i < 20; ++i) {
        list4.add(i);
    }

    // Add the data holders to the map. Note the keys in HashMap must be unique!!
    testMap.put(1, list1);
    testMap.put(2, list2);
    testMap.put(3, list3);
    testMap.put(4, list4);

    // Let's you want to get the values with the key 3 amd print it out
    for (Integer integer : testMap.get(3)) {
        Log.d("loop test", "Integer: " + integer);
    }

    // Now let's say you want to add some value to one of the lists, say key 2
    testMap.get(2).add(12314151);
    testMap.get(2).add(1231);
    testMap.get(2).add(77565);

    // And print it
    for (Integer integer : testMap.get(2)) {
        Log.d("loop test2", "Integer: " + integer);
    }

}

会产生类似这样的东西

05-22 21:34:35.765  20092-20092/? D/loop test﹕ Integer: 10
05-22 21:34:35.765  20092-20092/? D/loop test﹕ Integer: 11
05-22 21:34:35.765  20092-20092/? D/loop test﹕ Integer: 12
05-22 21:34:35.766  20092-20092/? D/loop test﹕ Integer: 13
05-22 21:34:35.766  20092-20092/? D/loop test﹕ Integer: 14
05-22 21:34:35.766  20092-20092/? D/loop test2﹕ Integer: 5
05-22 21:34:35.766  20092-20092/? D/loop test2﹕ Integer: 6
05-22 21:34:35.766  20092-20092/? D/loop test2﹕ Integer: 7
05-22 21:34:35.766  20092-20092/? D/loop test2﹕ Integer: 8
05-22 21:34:35.766  20092-20092/? D/loop test2﹕ Integer: 9
05-22 21:34:35.766  20092-20092/? D/loop test2﹕ Integer: 12314151
05-22 21:34:35.766  20092-20092/? D/loop test2﹕ Integer: 1231
05-22 21:34:35.766  20092-20092/? D/loop test2﹕ Integer: 77565