链接的哈希图获得第一个插入的

问题描述 投票:0回答:1

我有这个 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
。感谢帮助

java callback
1个回答
0
投票

我认为这会起作用

banks.entryset().stream()
    .filter(entry -> entry.value().equals("REGION2"))
    .findFirst()
    .map(Map.Entry::getKey)
    .ifPresent(banks::remove);

在移动设备上,尚未尝试运行此程序,因此语法可能存在小问题。

© www.soinside.com 2019 - 2024. All rights reserved.