乐趣区

关于java:java学习笔记6Collections-类

addAll();

往汇合中增加一些元素

Collections.addAll(str, "a", "b", "c");

shuffle();

随机打乱汇合

Collections.shuffle(str);

sort(List<T> list);

将汇合中的元素依照默认规定排序(升序)

Collections.sort(str);

对自定义类型排序(除非 重写 compareTo()办法 ),否则不能用。
必须实现 Compare 接口,重写 compareTo 办法定义排序。

public class Person implements Comparable<Person>{
    
    
    @Override
    public int compareTo(Person o) {
        //return 0;  // 认为元素都是雷同的
        // 自定义规定,比拟年龄(this. 参数 Person)return this.getAge() - o.getAge(); // 升序
        return o.getAge() - this.getAge(); // 降序
    }
}

Comparable 接口排序规定:

本人(this) - 参数:升序
参数 - 本人(this):降序

sort(List<T> list, Comparator<? super T>);

将汇合中元素依照指定规定排序

Comparable 和 Comparator 的区别:

Comparable:本人(this)和他人(参数)比拟,本人须要实现 Comparable 接口,重写 compareTo 办法。

Comparator:相当于找一个第三方的裁判,比拟两个

也须要重写比拟办法 compare();

        Collections.sort(str, new Comparator<Integer>() {
            
            // 重写比拟的规定
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2; // 升序
//                return o2 - o1; // 降序
            }
        });
        Collections.sort(str, new Comparator<Person>() {

            // 重写比拟的规定
            @Override
            public int compare(Person o1, Person o2) {int i = o1.getAge() - o2.getAge();
                if (i == 0) {
                // 如果年龄统一,比拟字符串
                    return o1.getName().charAt(0) - o2.getName().charAt(0);
                } else {return o1.getAge() - o2.getAge();}
            }
        });
退出移动版