簡體   English   中英

按值排序順序將鍵值對添加到TreeMap

[英]Adding key-value pairs to TreeMap in value sorted order

假設鍵值對來自流,並且我們正在逐一讀取它們,並將它們添加到需要按值然后按鍵排序的TreeMap中,我該如何實現? 我不是在談論任何中間映射,通過它們我可以輕松編寫一個Comparator來從該映射中獲取相應的值並將其用於排序邏輯。 它是不允許的。 直接地,它怎么可能。 我認為不使用其他數據結構就不可能實現。 還是我在某個地方亂搞呢? 有任何建議!

舉個例子:

蘋果2
香蕉20
橙色5

它應該在樹中為:

蘋果2
橙色5
香蕉20

如果僅不允許使用其他結構,那么我將在樹狀圖中使用包含原始鍵和數據源值的合成鍵。 在這種情況下,您將獲得以下內容:

[key, value] -> value

由於您在兩個地方都引用了相同的值對象,因此不會占用更多的內存。 並且它需要具有自定義比較器,該比較器可以比較合成鍵的值部分。

因此,最后您必須定義兩個以上的類。

PS:當然,您將不再能夠使用此地圖通過原始鍵來查找值。 僅在排序鍵值對時有用。 這樣,最好將TreeSet與鍵值對作為元素一起使用。

暫無
暫無

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

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