TreeMap获取第一个元素并删除

时间:2015-10-20 21:26:13

标签: java dictionary data-structures

我需要删除并获取TreeMap中的第一个/最低元素。但是,我忽略了一些东西,没有办法立刻做到这一点。

removedValue = treeList.remove(treeList.firstEntry().getValue());

该行必须访问地图两次,但似乎是要走的路。我不认为它应该有很大的不同,因为地图在添加某些内容时会被排序,但我希望它有功能。

2 个答案:

答案 0 :(得分:4)

如果你需要删除和获取条目,你可以使用pollFirstEntry()(假设你使用的变量类型至少是NavigableMap - 但是因为你正在使用{ {1}},我想是的。)

firstEntry

如果地图为空,请注意T2 removedValue = null; Map.Entry<T1, T2> entry = treeList.pollFirstEntry(); if(entry != null) { removedValue = entry.getValue(); } 检查以避免NPE(在这种情况下它将返回null。)

答案 1 :(得分:1)

如果您使用的是Java 8,我建议:

Optional<T2> removedValue = Optional.ofNullable(treeList.pollFirstEntry()).map(Map.Entry::getValue);

这可以很好地处理空列表,然后您可以使用removedValue.isPresent()来检查是否返回了值。