![](/img/trans.png)
[英]Java 8 Lambdas Map<String, String> to Map<String, Map<String, 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.