美文网首页
Java Collections.sort() 方法

Java Collections.sort() 方法

作者: 浅陌_45f3 | 来源:发表于2018-10-30 21:17 被阅读0次

查看这个方法时借鉴了Java中Collections.sort()排序详解 - 薛瑄的博客 - CSDN博客Collections.sort()用法简单介绍 - WHqingwei - 博客园 这个两个博客,下面说说自己的见解。

    Collection.sort() 方法是按照某一顺序对给定的集合进行排序,那么主要要掌握的就是如何用这个方法对集合进行排序。实现这个方法有两种方式:

(一)public static <T extends Comparable<? super T>> void sort(List<T> list); 当sort() 方法中只有一个参数,但是这个集合必须实现一个 Comparable 接口。

public class Test1 {

    static class A implements Comparable<A>{

        private String name;
        private Integer order;
        
        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public Integer getOrder() {
            return order;
        }

        public void setOrder(Integer order) {
            this.order = order;
        }
        
        public String toString(){
            return "name: " + name + " order: " + order;
        }

        @Override
        public int compareTo(A a) {
            return this.order.compareTo(getOrder());
        }
        
    }
    
    public static void main(String[] args) {

        List<A> listA = new ArrayList<A>();
        
        A a1 = new A();
        a1.setName("a1");
        a1.setOrder(1);
        
        A a2 = new A();
        a2.setName("a2");
        a2.setOrder(2);
        
        listA.add(a1);
        listA.add(a2);
        
        //listA 实现 Comparable<A> 的接口,所以可以调用 Collections.sort(List<T>);
        Collections.sort(listA);
        
        System.out.println(listA);
        
        
    }

}
  看薛瑄的博客中的例子中 Book 实现了 Comparable,而不是 Comparable<Book> ,注解中说不可以用 sort(List<T> list); 这个方法,但我在自己试验时发现只要是实现了 Comparable 接口,就可以用这个方法进行排序,只是会有警告。

(二)public static <T> void sort(List<T> list, Comparator<? super T> c); list 是要进行排序的集合;c 是比较器,实现 Comparator 接口,返回一个 int 值,通过这个值告诉 sort(); 方法按什么排序。

public class Test3 {
    
    static class C {
        private String name;
        private Integer order;
        
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Integer getOrder() {
            return order;
        }
        public void setOrder(Integer order) {
            this.order = order;
        }
        
        public String toString(){
            return "name: " + name + ", order: " + order;
        }
        
    }
    
    public static void main(String[] args) {
        List<C> c = new ArrayList<C>();
        
        C c1 = new C();
        c1.setName("c1");
        c1.setOrder(1);
        
        C c2 = new C();
        c2.setName("c2");
        c2.setOrder(2);
        
        c.add(c1);
        c.add(c2);
        
        Collections.sort(c, new Comparator<C>(){

            @Override
            public int compare(C c1, C c2) {
                return c1.getOrder().compareTo(c2.getOrder());
            }
            
        });
        
        System.out.println(c);
        
    }

}

相关文章

网友评论

      本文标题:Java Collections.sort() 方法

      本文链接:https://www.haomeiwen.com/subject/dgjntqtx.html