我需要從TreeMap
中刪除並獲取第一個元素或最低元素。但是,我忽略了一些無法立即做到的事情。TreeMap獲取第一個元素並刪除
removedValue = treeList.remove(treeList.firstEntry().getValue());
該行必須訪問地圖兩次,但它似乎是要走的路。我不認爲它應該有很大的區別,因爲當添加了某些東西的時候地圖會被排序,但我會期望它的功能。
我需要從TreeMap
中刪除並獲取第一個元素或最低元素。但是,我忽略了一些無法立即做到的事情。TreeMap獲取第一個元素並刪除
removedValue = treeList.remove(treeList.firstEntry().getValue());
該行必須訪問地圖兩次,但它似乎是要走的路。我不認爲它應該有很大的區別,因爲當添加了某些東西的時候地圖會被排序,但我會期望它的功能。
如果需要,既除去並獲取進入,你可以使用pollFirstEntry()
(假設你正在使用的變量的類型是至少NavigableMap
- 但因爲你正在使用firstEntry
,我想這是)。
T2 removedValue = null;
Map.Entry<T1, T2> entry = treeList.pollFirstEntry();
if(entry != null) {
removedValue = entry.getValue();
}
注意null
檢查,以避免NPE如果映射爲空(它會返回在這種情況下null
)。
我會在輪詢之前使用treeList.isEmpty()檢查,而不是之後的空檢查,以使其更清晰。 – Karussell
如果您使用的是Java 8,我會建議:
Optional<T2> removedValue = Optional.ofNullable(treeList.pollFirstEntry()).map(Map.Entry::getValue);
這與空列表科佩斯以及您就可以使用removedValue.isPresent()
檢查返回值。
難道你不能'removedValue = treeList.pollFirstEntry()。getValue();'? –
@AlexisC。這應該是一個答案。 –
@AlexisC。它是否也將列表中的條目從列表中刪除? – Madmenyo