【发布时间】:2022-09-23 03:33:46
【问题描述】:
Comparator 的方法thenComparing() 的正确用法是什么?为什么它在我的代码中不能正常工作?我不太明白我收到错误的原因:
no instance(s) of type variable(s) U exist so
that Object conforms to Comparable<? super U>
那是产生错误的代码:
Map<Integer, Long> sortedCards = new LinkedHashMap<>();
List<Card> cards = // initializing the list
cards.stream().collect(
Collectors.groupingBy(
card -> card.kind.rank,
Collectors.counting()
))
.entrySet().stream()
.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())
.thenComparing(Map.Entry::getKey))
.forEachOrdered(e -> sortedCards.put(e.getKey(), e.getValue()));
我的Card 班级:
public static class Card implements Comparable<Card> {
private Kind kind;
// constructors, getters, etc.
}
Kind 枚举:
public enum Kind {
TWO(1, \"2\"), THREE(2, \"3\"), FOUR(3, \"4\"), // etc.;
public int rank;
// constructors, getters, etc.
}
标签: java java-stream comparator