簡體   English   中英

通過鍵查找Java集合,按值排序

[英]Java collection lookup by a key, sort by a value

我在Java中有一個帶有字符串鍵和浮點數的結構。 我想將它們存儲在一個集合中,在該集合中我可以通過鍵進行簡單查找,或者“彈出”得分最低的項目。

我該怎么辦?

您需要兩個集合/數據結構。 我建議使用自定義對象:

public class GiveMeANamePlease implements Comparable<GiveMeANamePlease>{
    private final String key;
    private final float score;
    // add constructor, getter, compareTo, equals and hashcode
}

您可以使用HashMap<String, GiveMeANamePlease>進行鍵查找,並使用TreeSet<GiveMeANamePlease>進行得分排序。

您可以像這樣彈出TreeSet中的最低元素:

treeSet.remove(treeSet.first());

並不是那么好,因為它需要雙重查找(效率低並且不是線程安全的)。

提示:如果只想彈出最小值,將分數存儲在Min-Heap中會更有效,但是沒有標准的Java實現。

根據您的分數,使您的結構實現可比性,並使用映射按鍵存儲實例,並使用SortedSet保持按分數排序實例。

據我所知,沒有一個具有這種可操作性的Collection類型。

為了存儲,我將使用地圖。 對於最低/最高分數,我將獲取地圖的EntrySet並將其用於創建第二個Collection,該Collection按值對條目進行排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM