我需要删除并获取TreeMap
中的第一个/最低元素。但是,我忽略了一些东西,没有办法立刻做到这一点。
removedValue = treeList.remove(treeList.firstEntry().getValue());
该行必须访问地图两次,但似乎是要走的路。我不认为它应该有很大的不同,因为地图在添加某些内容时会被排序,但我希望它有功能。
答案 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()
来检查是否返回了值。