Java对ArrayList集合中的元素(自定义类)进行排序

前言

如果ArraylIst中存放的不是整型等基本类型,而存放的是自定义类这样的引用类型,我们应该如何对其进行排序呢?(emmm这玩意儿在python中edge_lst = sorted(edge_lst, key=lambda x: x.weight)一句话就解决了…吐血1今天找小姐姐说话,没发挥好,吐血2)

这里的排序使用的是Collections这个工具类的sort静态方法,也就是说不需要对Collections进行实例化,就可以使用。

方法一:自定义类实现Comparable接口,并重写compareTo方法

这里采用的是:public static <T> void sort(List<T> list)
举例说明:

class Edge implements Comparable<Edge>{
    
    
    public int start;
    public int end;
    public double weight;

    public Edge(int start, int end, double weight) {
    
    
        this.start = start;
        this.end = end;
        this.weight = weight;
    }
    @Override
    public int compareTo(Edge o) {
    
    
        return (int)(this.weight - o.weight);
    }
}
Collections.sort(arr_lst); // 这里的arr_lst是ArrayList<Edge>对象

方法二:实现Comparator接口,该对象作为Collections.sort的第二个参数

这里采用的是public static <T> void sort(List<T> list,Comparator<? super T>
举例说明

Collections.sort(arr_lst, new Comparator<Edge>() {
    
    
            @Override
            public int compare(Edge o1, Edge o2) {
    
    
                return (int)(o1.weight-o2.weight);
            }
        });

啊,还有这种方法,暂时不知道其原理。。

arr_lst.sort((Edge o1, Edge o2) -> (int) (o1.weight - o2.weight));

参考

Java中如何对ArrayList集合中的元素进行排序

猜你喜欢

转载自blog.csdn.net/jokerxsy/article/details/113840466
今日推荐