1.集合的工具类java.util.Collections下有一个静态方法:sort,可以对List集合进行自然排序(从小到大)但对于sort方法而言,它能比较的是要求可以直接进行比较的类型,所以如果比较的内容无法直接比较需要单独定义比较器 定义元素之间的比较规则
public class SortListDemo2 {
public static void main(String[] args) {
List list = new ArrayList<>();
list.add(new Point(5,6));
list.add(new Point(13,87));
list.add(new Point(55,35));
list.add(new Point(9,4));
list.add(new Point(2,1));
list.add(new Point(99,88));
System.out.println(list);
// Collections.sort(list);
//单独定义比较器(定义Point元素的比较规则),可以采用lambda来对定义器进行缩减
// Comparator c = new Comparator() {
//
// public int compare(Point o1, Point o2) {
// int olen1 = o1.getX()*o1.getX()+o1.getY()*o1.getY();
// int olen2 = o2.getX()*o2.getX()+o2.getY()*o2.getY();
return olen1-olen2;//升序
// return olen2-olen1;//反过来减就是降序(从大到小)
// }
// };
// Collections.sort(list,c);
// Collections.sort(list,new Comparator() {
// public int compare(Point o1, Point o2) {
// int olen1 = o1.getX()*o1.getX()+o1.getY()*o1.getY();
// int olen2 = o2.getX()*o2.getX()+o2.getY()*o2.getY();
// return olen1-olen2;//升序
// }
// });
Collections.sort(list,(o1,o2)->
o1.getX()*o1.getX()+o1.getY()*o1.getY()-
o2.getX()*o2.getX()-o2.getY()*o2.getY()
);
System.out.println(list);
}
}
二、在list中字符串之间比较的规则为 按照字母的大小和字母的先后顺序进行比较。 当字符串中为其他韩文字时 可以设置一个比较器
public class SortListDemo3 {
public static void main(String[] args) {
List list = new ArrayList<>();
// list.add("jack");
// list.add("rose");
// list.add("jerry");
// list.add("tom");
// list.add("black");
// list.add("ada");
list.add("苍老师");
list.add("传奇");
list.add("小泽老师");
System.out.println(list);
// Collections.sort(list);
// Collections.sort(list,(o1,o2)->o1.length()-o2.length());
// Collections.sort(list, Comparator.comparingInt(String::length));
list.sort((o1, o2) -> o1.length()-o2.length());
System.out.println(list);
}
}



