我有对象的列表,以及对象名单,sortig我正在寻找最简单的方法来排序的Java 8中列表:最简单的用java 8拉姆达
public class MyClass {
private Integer someInteger;
private String someString;
}
private List<MyClass> myClasses;
在这个问题上,我已经尝试了java的8答案:
Collections.sort(myClasses, (MyClass m1, MyClass m2) -> m1.someInteger.compareTo(m2.someInteger));
但我的Eclipse是大喊:
The method sort(List<T>, Comparator<? super T>) in the type
Collections is not applicable for the arguments (List<MyClass>,
(MyClass m1, MyClass m2) -> {})
和:
Type mismatch: cannot convert from Comparator<MyClass> to Comparator<? super T>
我还发现了另外一个例子:
myClasses.sort(Comparator.comparing(MyClasse::getSomeInteger));
但也有错误:
The method sort(Comparator<? super MyClass>) in the type List<MyClass>
is not applicable for the arguments (Comparator<MyClass>)
所以,我怎么能做到这一点的最简单的方法?
什么问题是什么呢?你无法比较对象吗? – user218046
最简单的就是尊重“信息隐藏”原则,让你的班级实施“可比”。第二种最简单的方法是通过* getters *访问类属性,而不是直接使用。 –
第一次尝试'Collections.sort'。我看不出这是如何实现的,因为'someInteger'是私有的,因此无法使用'm1.someInteger'来访问它。也可以看看[this](https://www.mkyong.com/java8/java-8-lambda-comparator-example/)的确切语法 –