HashMap 实际元素的索引
HashMap actual element's index
我有一个以 Integer、String 数据类型作为传入参数的 HashMap。
(LinkedHashMap<Integer, String> linc);
里面的数据是:
1,测试 |
2、测试|
4、测试
我需要读取 HashMap 的键、值和索引号。
可能吗? (1 , 1 , 测试 | 2, 2, 测试 | 3, 4, 测试)
到目前为止我能达到第二和第三:
for (int j = 0; j < linc.size(); j++) {
j = index number | lic.get(j) = value | key = ?
}
如果您希望所有条目都使用此三元组,则需要使用条目集的迭代器,并维护元素索引的并行计数:
int index = 0;
for (Map.Entry<Key, Value> entry : map.entrySet()) {
Key key = entry.getKey();
Value value = entry.getValue();
// Whatever code using (key, value, index)...
++index;
}
我想不出一个好的方法来使用 LinkedHashMap 仅针对单个键执行此操作:我认为您几乎必须做同样的事情,并且一旦您完成就跳出循环找到了感兴趣的关键。
如果您能够使用 Guava 的 ImmutableMap,您将能够这样定位键的索引:
int index = immutableMap.keySet().asList().indexOf(key)
从而得到对应的值:
immutableMap.values().asList().get(index);
我有一个以 Integer、String 数据类型作为传入参数的 HashMap。
(LinkedHashMap<Integer, String> linc);
里面的数据是:
1,测试 | 2、测试| 4、测试
我需要读取 HashMap 的键、值和索引号。
可能吗? (1 , 1 , 测试 | 2, 2, 测试 | 3, 4, 测试)
到目前为止我能达到第二和第三:
for (int j = 0; j < linc.size(); j++) {
j = index number | lic.get(j) = value | key = ?
}
如果您希望所有条目都使用此三元组,则需要使用条目集的迭代器,并维护元素索引的并行计数:
int index = 0;
for (Map.Entry<Key, Value> entry : map.entrySet()) {
Key key = entry.getKey();
Value value = entry.getValue();
// Whatever code using (key, value, index)...
++index;
}
我想不出一个好的方法来使用 LinkedHashMap 仅针对单个键执行此操作:我认为您几乎必须做同样的事情,并且一旦您完成就跳出循环找到了感兴趣的关键。
如果您能够使用 Guava 的 ImmutableMap,您将能够这样定位键的索引:
int index = immutableMap.keySet().asList().indexOf(key)
从而得到对应的值:
immutableMap.values().asList().get(index);