[英]Java TreeMap get Kth smallest key
我正在使用TreeMap,並希望獲取第K個最小鍵。 我編寫了以下實現:
public static Long kthKey(TreeMap<Long, MyObject> treeMap, int kth) {
Long currentKey = treeMap.firstKey();
for (int i = 1; i < kth; i++) {
currentKey = treeMap.higherKey(currentKey);
}
return currentKey;
}
就內存而言,這是非常有效的,但就運行時間而言可能並非如此。
有沒有更有效的方法可以做到這一點?
如果允許使用迭代器,則可以執行此操作。
public <T> static Long kthKey(Map<T, ?> map, int kth) {
for(T key: map.keySet())
if(kth-- < 1) return key;
return null;
}
一個迭代器的成本不是很高,如果您需要避免這種情況,我建議您看一下如何調用此方法並對其進行優化,例如說您擁有
for (int k = 0; k < mapsize(); k++) {
Long l = kthKey(map, k);
您完全不需要調用此方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.