我有这个 LinkedHashMap,它保持插入顺序上的 K-V 对的顺序。
Map<Integer, String> map = new LinkedHashMap<>();
for (int i = 0; i < 1000000; i++) {
if (i == 3000 || i == 4000 || i == 5000) {
map.put(i, "REGION2");
}else{
map.put(i, UserServiceImpl.Country.randomCountry());
}
}
for (Map.Entry<Integer, String> e : map.entrySet())
System.out.println(e.getKey() + " "
+ e.getValue());
所以我想获取哈希图中第一个插入的 K-V 对。为此,我需要使用 LinkedHashMap,请参阅此线程的更多信息。
现在我想获取第一个插入的 K-V 对并将其从链表中删除。 因此,如果 REGION2 在循环中插入到
i = 3000
、i = 4000
和 i = 5000
,我想获取 <3000, REGION2> 的地图值,因为它是最早插入的。然后从地图中删除该 <3000, REGION2>。
我怎样才能在代码中实现这一点?
我知道
String firstKey = banks.keySet().iterator().next();
将为我提供以正确迭代插入的第一个密钥。 看这个帖子 但我想根据值插入第一个 K-V 对,例如
REGION2
。感谢帮助
我认为这会起作用
banks.entryset().stream()
.filter(entry -> entry.value().equals("REGION2"))
.findFirst()
.map(Map.Entry::getKey)
.ifPresent(banks::remove);
在移动设备上,尚未尝试运行此程序,因此语法可能存在小问题。