关于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();
                }
            }
        });

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理