Java如何获取HashMap的Map索引

时间:2016-01-17 16:05:02

标签: java dictionary indexing hashmap

请原谅我,如果看似简单,但我无法轻易解决。我想过使用循环,但想知道是否有人知道更简单的方法:我有:

string pro

我需要在测试中获取特定索引处的键或值。例如,我需要获取索引3处的键和值等。原因是我使用比较器并对Map进行排序,并希望显示特定索引处的值已更改。

感谢任何想法。

更新:

我用过:

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

        map.put("ClubB", 1);
        map.put("ClubA", 2);
        map.put("ClubC", 2);
        map.put("ClubD", 2);
        map.put("ClubE", 3);
        map.put("ClubF", 2);
        map.put("ClubG", 2);

然后我使用aloop打印出值:

HashMap leagueTable = new HashMap();
Map<String, Integer> map = sortByValues(leagueTable);

 public <K extends Comparable<K>, V extends Comparable<V>> Map<K, V> sortByValues(final Map<K, V> map) {
        Comparator<K> valueComparator = new Comparator<K>() {
            public int compare(K k1, K k2) {
                int compare = map.get(k2).compareTo(map.get(k1));
                if (compare == 0) {
                    return k1.compareTo(k2); // <- To sort alphabetically
                } else {
                    return compare;
                }
            }
        };
        Map<K, V> sortedByValues = new TreeMap<K, V>(valueComparator);
        sortedByValues.putAll(map);
        return sortedByValues;
    }

2 个答案:

答案 0 :(得分:0)

使用for循环结束并与我已添加到Map中的内容进行比较:

HashMap<String, Integer> map = new HashMap<>();

        map.put("ClubD", 3);
        map.put("ClubB", 1);
        map.put("ClubA", 2);
        map.put("ClubC", 2);
        map.put("ClubE", 2);
        map.put("ClubF", 2);
        map.put("ClubG", 2);


        Map<String, Integer> mapResult = instance.sortByValues(map);
        String expectedResultKey = "ClubB";
        int expectedResultValue = 1;
        String resultKey = "";
        int resultValue = 0;
        for (Map.Entry<String, Integer> entry : map.entrySet()) {
        resultKey = entry.getKey();
        resultValue = entry.getValue();

        }

        assertSame(expectedResultKey, resultKey);

答案 1 :(得分:0)

HashMap 没有索引。它们只是将数据存储在键值对中。

而不是map是地图,为什么不使用2D数组呢? (并给它一个更合适的名字)

String[][] array = new String[3][3];
array[3] = new String[] { "ClubD" };
array[1] = new String[] { "ClubB" };
array[2] = new String[] { "ClubA", "ClubC", "ClubE", "ClubF", "ClubG" };

System.out.println(array[3][0]);

然后如果你想遍历那个数组,你就会这样做:

for (int a = 0; a < array.length; a++)
    for (int b = 0; b < array[a].length; b++)
        if (array[a][b] != null)
            System.out.println("array["+a+"]["+b+"] is: "+array[a][b]);