1.集合的排序:
Collection为集合的工具类,里面定义了很多的静态方法用于操作集合
Collections.sort(List list)方法:可以对list集合进行自然排序(从小到大),其要求LIst集合中的元素必须是可比较的,若不可比较则直接发生编译错误,不允许排序,判断是否可比较的标准为元素是否实现了Comparator接口,在实际的开发中,我们是不会让我们自己定义的类去实现Comparator接口的,因为这对我们的程序有侵入性
侵入性:当我们调用某个API功能时,其要求我们为其修改额外的其他代码,这个现象就叫做侵入性,侵入性越强则越不利于程序的后期维护,应尽量避免
建议使用重载的Collections.sort(List list , Comparator c)方法,可以通过Comparator来自定义比较规则
public static void main(String[] args) {
List<Point> list = new ArrayList<>();
list.add(new Point(5,8));
list.add(new Point(15,28));
list.add(new Point(99,66));
list.add(new Point(45,23));
list.add(new Point(64,9));
list.add(new Point(1,4));
System.out.println("list原始数据"+list);
list.sort(new Comparator<Point>() {
@Override
public int compare(Point o1, Point o2) {
int len1 = o1.getX()* o1.getX()+o1.getY()* o1.getY();
int len2 = o2.getX()* o2.getX()+o2.getY()* o2.getY();
return len1-len2;//升序(前减后)
}
});
// Collections.sort(list, new Comparator<Point>() {
// @Override
// public int compare(Point o1, Point o2) {
// int len1 = o1.getX()* o1.getX()+o1.getY()* o1.getY();
// int len2 = o2.getX()* o2.getX()+o2.getY()* o2.getY();
// return len1-len2;//升序(前减后)
// //return len2-len1;//降序(后减前)
// //return o1.getX()- o2.getX();//按x坐标升序
// //return o2.getY()-o1.getY();//按y坐标降序
// }
// });
System.out.println("list排序后"+list);
public class Point {
private int x;
private int y;
public