集合的排序操作

排序

/*
* 排序现在只考虑List集合
* java.util.Collection 提供了操作集合的很多工具性质的方法
* sort()方法,就可以将List集合中的数据进行自然排序(升序)
* */

public class SortListDemo {
    
    
    public static void main(String[] args) {
    
    
        List<Integer> list = new ArrayList<>();
        Random ran = new Random();
        for (int i = 0;i < 10; i++){
    
    
            list.add(ran.nextInt(100));
        }
        System.out.println(list);
        Collections.sort(list);
        System.out.println(list);
    }
}
  • java.util.Collection 提供了操作集合的很多工具性质的方法
  • sort()方法,就可以将List集合中的数据进行自然排序(升序)

勾股定理
A²+B²的和再开方
在这里插入图片描述
开方 5²+8² 就可以求出 顶点到0点的距离

自定义排序

/**
 * 自定义排序
 */
public class SortListDemo2 {
    
    
    public static void main(String[] args) {
    
    
    
        List<Point> list = new ArrayList<>();
        list.add(new Point(5,6));
        list.add(new Point(7,3));
        list.add(new Point(6,3));
        list.add(new Point(9,1));
        list.add(new Point(3,5));
        System.out.println(list);

        /*
        * Collection类中的sort方法
        * 要求排序的集合泛型类型必须实现comparable接口并重写规定中的方法
        * 否则编译错误
        *
        * 由于编写这个方法会造成代码出现额外的耦合性
        * 排序规则代码入侵到Point类中,所以不推荐
        * 不利于代码维护
        * */

        /*
        使用比较器
        *java.util.Comparator接口
        在Collection类的sort方法还有另一个重载,允许在集合后加一个比较器类型的参数
         */
        Comparator<Point> com = new Comparator<Point>() {
    
    
            @Override
            public int compare(Point p1, Point p2) {
    
    
                /**
                 * int返回值具体数值不重要只关注是正数,负数,还是0
                 * 正数:表示p1>p2
                 * 负数:表示p2>p1
                 * 0相等
                 */
                int l1 = p1.getX()*p1.getY()+p1.getY()*p1.getY();
                int l2 = p2.getX()*p2.getX()+p2.getY()*p2.getY();
                return l1-l2;
            }
        };
        Collections.sort(list,com);
        System.out.println(list);
    }
}
  • 按照顶点到原点的距离大小进行升序排列
  • 降序排列return l2-l1

按照字数多少进行排序

public class Collection {
    
    
    public static void main(String[] args) {
    
    
        List<String> list = new ArrayList<>();
        list.add("卡卡西");
        list.add("凯");
        list.add("我爱罗");
        list.add("香琳");
        list.add("大筒木辉夜");

        System.out.println(list);

        Collections.sort(list, new Comparator<String>() {
    
    
            @Override
            public int compare(String o1, String o2) {
    
    
                return o1.length()-o2.length();
            }
        });

        System.out.println(list);
    }
}

おすすめ

転載: blog.csdn.net/sinat_33940108/article/details/121351356