Java 泛型-集合排序方法
使用Java 泛型-集合排序方法,java,generics,Java,Generics,使用Collections.sort(List)时,使用List,其中Employee是一个不扩展compariable接口的类 然后我看到以下编译错误 类型集合中的方法排序(列表)不适用于参数(列表) 我不明白为什么T应该实现Comparable,在sort方法的方法参数中没有指定它 更新:请停止投票。我一直认为只有方法参数决定作为参数传递的内容,但我看到了完整的签名: public static <T extends Comparable<? super T>> vo
Collections.sort(List)时,使用List
,其中Employee
是一个不扩展compariable
接口的类
然后我看到以下编译错误
类型集合
中的方法排序(列表)
不适用于参数(列表
)
我不明白为什么T
应该实现Comparable
,在sort
方法的方法参数中没有指定它
更新:请停止投票。我一直认为只有方法参数决定作为参数传递的内容,但我看到了完整的签名:
public static <T extends Comparable<? super T>> void sort(List<T> list)
public staticpublic static对于int、long、float等原始数据类型,比较是预定义的。
排序接受预定义的比较度量并对变量进行排序
但是,创建类时,类可以由许多不同的基本类型甚至其他对象组成。Java无法自动知道如何进行比较,因此它需要扩展可比较接口并定义指定如何排序的函数。例如
Class car {
int id;
String name;
String company;
}
在实现comparable之后,您可以定义排序是否取决于车辆的id、名称或公司名称。
希望这能消除一些需要。对于泛型,有两种方法:1。通配符和2.有界类型参数
通配符示例:
public void sort(ListYes:一般来说,如果你不能手动执行某些操作(即使很慢),那么计算机也不能。记住这一点:如果我给你一个FooBar列表,没有关于FooBar是什么的信息,让你对它们进行排序——你会怎么做?这两个答案是为了让FooBar能够告诉你如何对自己进行排序(即,它是可比较的),或者让你也告诉我如何对它们进行比较(即,传递一个比较器)。我只是不明白上次更新对我非常有用什么是
Class car {
int id;
String name;
String company;
}