下面的代碼正確返回輸出'女士',因爲區分大小寫。不區分大小寫的顯式排序番石榴
import com.google.common.collect.SortedSetMultimap;
import com.google.common.collect.TreeMultimap;
import com.google.common.collect.Ordering;
private static final Ordering<String> PRODUCT_ORDER = Ordering
.explicit("men","ladies")
.reverse();
private void testGuavaOrdering() {
SortedSetMultimap<Integer, String> onlineAreaPriorityCountMap = TreeMultimap
.create(Collections.reverseOrder(), PRODUCT_ORDER);
onlineAreaPriorityCountMap.put(1, "men");
onlineAreaPriorityCountMap.put(1, "men");
onlineAreaPriorityCountMap.put(1, "ladies");
onlineAreaPriorityCountMap.put(1, "ladies");
System.out.println(onlineAreaPriorityCountMap.values().iterator().next());
}
但是,下面的代碼不工作,並拋出異常,如果我從男性更改爲男性。
private static final Ordering<String> PRODUCT_ORDER = Ordering
.explicit("Men","Ladies")
.reverse()
private void testGuavaOrdering() {
SortedSetMultimap<Integer, String> onlineAreaPriorityCountMap = TreeMultimap
.create(Collections.reverseOrder(), PRODUCT_ORDER);
onlineAreaPriorityCountMap.put(1, "men");
onlineAreaPriorityCountMap.put(1, "men");
onlineAreaPriorityCountMap.put(1, "ladies");
onlineAreaPriorityCountMap.put(1, "ladies");
System.out.println(onlineAreaPriorityCountMap.values().iterator().next());
}
例外:
Exception in thread "main" com.google.common.collect.Ordering$IncomparableValueException: Cannot compare value: men
at com.google.common.collect.ExplicitOrdering.rank(ExplicitOrdering.java:46)
at com.google.common.collect.ExplicitOrdering.compare(ExplicitOrdering.java:40)
at com.google.common.collect.ReverseOrdering.compare(ReverseOrdering.java:38)
at java.util.TreeMap.compare(TreeMap.java:1295)
at java.util.TreeMap.put(TreeMap.java:538)
at java.util.TreeSet.add(TreeSet.java:255)
at com.google.common.collect.AbstractMapBasedMultimap.put(AbstractMapBasedMultimap.java:195)
at com.google.common.collect.AbstractSetMultimap.put(AbstractSetMultimap.java:121)
at com.google.common.collect.TreeMultimap.put(TreeMultimap.java:78)
at TestMap.testGuavaOrdering(TestMap.java:38)
at TestMap.main(TestMap.java:32)
如何做到不區分大小寫比較番石榴?
不該案例變化是否在目標地圖中?或者是你的控制之外的顯式排序? – shmosel
對於所有持續重複標記的人,請仔細閱讀問題。如果您仍然認爲其他答案是相關的,請對其進行測試以確認。 – shmosel
我不認爲它是一個重複的問題,因爲我有自定義顯式的順序。 – user2057006