簡體   English   中英

Collections 和自然訂購 Map <long, map<string, string> &gt;</long,>

[英]Collections and Naturally ordering a Map<Long, Map<String, String>>

我在使用更復雜的 map 時遇到了麻煩; 對於標准Map<Long, String> ,我會做類似的事情:

Ordering<Long> valueComparator = Ordering.natural().onResultOf(Functions.forMap(myMap));
Map<Long, String> orderedMap = ImmutableSortedMap.copyOf(myMap, valueComparator);

但我似乎無法讓它喜歡Map<Long, Map<String, String>> ,仍然由 Long 訂購。 也許我錯過了什么? 下面不起作用...

Ordering<Long> valueComparator = Ordering.natural().onResultOf(Functions.forMap(myOtherMap));
Map<Long, Map<String, String>> orderedMyOtherMap = ImmutableSortedMap.copyOf(myOtherMap,valueComparator);

你的第一個例子沒有做你似乎在說它正在做的事情。 它正在創建一個 map,它按與每個Long鍵對應的String值排序。 如果您只想按鑰匙訂購,您只需:

ImmutableSortedMap<Long, String> orderedMap = ImmutableSortedMap.copyOf(myMap);

同樣的事情也適用於Map<Long, Map<String, String>> 您嘗試做的事情不起作用的原因是Map<String, String>不是Comparable ,因此它沒有自然順序。

順便說一句,您可能需要考慮使用Table<Long, String, String>而不是Map<Long, Map<String, String>> 甚至還有一個TreeBasedTable可以按排序順序存儲行鍵和列鍵。

暫無
暫無

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

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