排序以及“::”的方法调用
import java.util.LinkedList;
import java.util.List;
import java.util.Comparator;
class fruit{
String name;
int weight;
public fruit(String name,int weight) {
// TODO Auto-generated constructor stub
this.name = name;
this.weight = weight;
}
public int getweight() {
return this.weight;
}
public String getName() {
return this.name;
}
}
public class test {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<fruit> l1 = new LinkedList<fruit>();
l1.add(new fruit("apple", 15));
l1.add(new fruit("orange", 15));
l1.add(new fruit("banan", 15));
l1.add(new fruit("gargon_furit", 15));
l1.add(new fruit("pear", 15));
Comparator<fruit> c = Comparator.comparing(fruit::getweight).reversed();
l1.sort(c);
for(int i=0;i<l1.size();i++) {
System.out.println(l1.get(i).name +" " + l1.get(i).weight);
}
}
}
如上所示,有了Comparetor用法之后特别简单,而且Comparetor提供了“比较器复合”的功能;
比如说排序后的结果如果需要逆序,那就调用reversed方法,还有比较器链,如果水果一样重,还可以接着比较名字,方法是thenComparing();
Comparator<fruit> c = Comparator.comparing(fruit::getweight).reversed().thenComparing(fruit::getName);
修改之后