为什么Collections.max()方法不支持Set <entry <string,integer >>

时间:2018-10-26 13:15:02

标签: java collections

String key = Collections.max(countMap.entrySet(), (entry1, entry2) -> entry1.getValue() - entry2.getValue()).getKey();
System.out.println(key);
Set<Entry<String,Integer>> entrySet = countMap.entrySet();
Collections.max(countMap.entrySet());

这是代码“ Collections.max(Collection<?extends T>, Comparator<? super T>)”的第一行,使用两个参数作为Set和比较器,效果很好。

但是最后一行代码“ Collections.max(countMap.entrySet());”给出了编译时错误,提示“ Collections类型中的方法max(Collection)不适用于参数(Set>)”。 需要上述代码的解释。

1 个答案:

答案 0 :(得分:5)

https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#max(java.util.Collection)具有

public static <T extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) 
  

集合中的所有元素必须实现Comparable接口。

Entry未实现Comparable接口,因此无法将其传递给此方法。

extends类型参数的约束中的Comparable ... T是告诉编译器要求的原因。