检查地图中的键,递增新的键值并添加回地图

时间:2017-11-06 15:05:44

标签: java maps

我在LinkedHashMap<Integer,String>中有条目:

1000 Coffee
2000 Source
3000 Legends
4000 Kaldi
4001 Sheikh Omar
3001 Transmission

整数值基于某种层次结构。有没有办法让我检查地图中3000或2000系列中的最后一个键是什么,以便我的新键可以增加?例如。如果我需要在2000层次结构下创建一个新条目,最后一个键是2015,那么我该如何检查并将我的新密钥增加到2016并添加到地图中。

2 个答案:

答案 0 :(得分:1)

您可以在密钥集上使用流API,如下所示:

 //floor is the start of the series, ceiling is the start of the next one.
 public Optional<Integer> getLastInSeries(int floor, int ceiling, LinkedHashMap<Integer, String> linkedHashMap) {
        return linkedHashMap.keySet().stream()
                .filter(integer -> integer < ceiling && integer > floor)
                .max(Comparator.naturalOrder());
    }

这会返回一个可选项,因为您无法确定该系列中是否已有值。

答案 1 :(得分:0)

您可以存储最后一个键并在添加新元素后递增它或以这种方式找到它:

public int getLastKey(int series, LinkedHashMap map) {
    for(int i = 0; i < 1000; i++) {
        if (map.get(series + i) == null) {
            return series + i;
}
<{1}} keySet()方法也可能有所帮助。