java学习笔记(6)——Collections 类

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

原文 

https://segmentfault.com/a/1190000023306627

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » java学习笔记(6)——Collections 类

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址