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);