行为参数中入参为对象,通过比较对象属性来对比排序
---->当比较的是入参的属性类型为String/Integer/BigDecimal时:a.getColor().compareTo(b.getColor());
---->当比较的是入参的属性类型为int(Integer)时:
public class ConsultAppleByWeight {
public static void main(String[] args) {
List<Apple> apples = Arrays.asList(new Apple("red", 80),
new Apple("green", 188),
new Apple("green", 200),
new Apple("red", 199));
/*apples.sort(new Comparator<Apple>() {
public int compare(Apple a1, Apple a2){
return a1.getWeight() - (a2.getWeight());
}
});*/
//apples.sort((Apple a, Apple b) -> a.getColor().compareTo(b.getColor()));
apples.sort((Apple a, Apple b) -> a.getWeight() - b.getWeight());//当类型为int/Integer时
apples.sort((Apple a, Apple b) -> a.getWeight().compareTo(b.getWeight()));//当类型为Integer时
System.out.println(apples);
}
-------Int(Integer)对象与对象属性类型为int(Integer)的排序的区别--------------------------
@Test
public void sss() {
ArrayList<Integer> arrayList = new ArrayList<Integer>();
arrayList.add(1);
arrayList.add(5);
arrayList.add(3);
arrayList.add(2);
// arrayList.sort((a,b) -> a.compareTo(b));
// Collections.sort(arrayList,(a,b) -> a.compareTo(b));
Collections.sort(arrayList, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1.compareTo(o2);
}
});
System.out.println(arrayList);
}
}
有什么有误区的地方,请各位道友指正!