当前位置: 首页 > news >正文

Collections中的三个常用方法,addAll,sort,shuffle

package Day15;/*
 @Author wanghongyuan
  @Date 2020/12/24

*/

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

/*
    java.utils.Collection是集合的工具类,用来对集合进行操作,部分方法如下:
    -public static <T> boolean addAll(Collection<T> c,T...elements):往集合中添加一些元素。
    -public static void shuffle(list<?> list)打乱顺序:打乱集合的顺序。
    -public static <T> void sort(list<T> list):将集合中元素按照默认规则排序。
    注意:
        sort(list<T> list)使用前提
        被排序的集合里边存储的元素,必须实现Comparable,重写接口中的compareTo定义排序的规则

     Comparable接口的排序规则:
        自己(this)-参数:升序
        参数-自己(this): 降序

    -public static <T> void sort(list<T> list,Comparator<? super T>):将集合中的元素按照指定规则排序。

    Comparable 和 Comparator的区别:
        Comparable:自己(this)和别人(参数)的比较,自己需要实现Comparable接口,重写比较的规则CompareTo方法;

        Comparator:找一个第三方裁判,比较两个。

 */
public class Demo01Collections {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        //往集合中添加元素
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        list.add("e");
        System.out.println(list);
    //  -public static <T> boolean addAll(Collection<T> c,T...elements):往集合中添加一些元素。
//        静态方法可以直接调用
        Collections.addAll(list,"2","4","5","6","123");
        System.out.println(list);
        Collections.shuffle(list);
        System.out.println(list);
//        将集合中的元素按照默认规则排序,只能传list集合,也是静态方法可以直接通过方法调用。
        Collections.sort(list);
        System.out.println(list);//默认是升序的
        ArrayList<String> arr = new ArrayList<>();
        System.out.println("===============");
        Collections.addAll(arr,"123","sad","中国","GOOD");
        System.out.println(arr);
//        字符串的升序
        Collections.sort(arr);
        System.out.println(arr);

//        创建一个集合泛型为自定义的类->Person
        ArrayList<Person> list01 = new ArrayList<>();
//        匿名对象创建周星驰等
        list01.add(new Person("周星驰",23));
        list01.add(new Person("刘德华",22));
        list01.add(new Person("a甄子丹",24));
        list01.add(new Person("c成龙",24));
        list01.add(new Person("b成龙",24));
        System.out.println(list01);
        Collections.sort(list01);
        System.out.println(list01);
//        Collections.sort(list01, new Comparator<Person>() {
//            //重写比较的规则
//            @Override
//            public int compare(Person o1, Person o2) {
//                // 按照年龄升序排序
//                return o1.getAge() - o2.getAge();
                return o1.getName()-o2.getName();
//            }
//        });
        Collections.sort(list01, new Comparator<Person>() {
            //重写比较的规则
            @Override
            public int compare(Person o1, Person o2) {
                // 按照年龄升序排序
                int result = o1.getAge() - o2.getAge();
//                如果两个人的年龄相同,再使用姓名的第一个字比较
                if (result==0){
                    result = o1.getName().charAt(0) - o2.getName().charAt(0);
                }
                return result;
//                return o1.getName()-o2.getName();
            }
        });
        System.out.println(list01);
    }
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Map遍历键值对案例练习
  • Hashtable
  • Map练习,统计输入字符串的个数
  • 斗地主综合案例有序版
  • Throwable中Exception/Error异常的分类及处理
  • 异常处理的过程
  • 异常的几个注意事项
  • 如何自定义异常类
  • 2020年年终总结
  • Thread类的使用方法
  • 异常的总结
  • Thread类的获取线程名称和设置线程名称
  • Runnable类
  • 匿名内部类方式实现线程的创建
  • ThreadSafe解决线程安全的问题
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 《深入 React 技术栈》
  • Android开源项目规范总结
  • canvas绘制圆角头像
  • Effective Java 笔记(一)
  • Git 使用集
  • Java超时控制的实现
  • java正则表式的使用
  • JS正则表达式精简教程(JavaScript RegExp 对象)
  • Objective-C 中关联引用的概念
  • Redux 中间件分析
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 聊聊sentinel的DegradeSlot
  • 世界上最简单的无等待算法(getAndIncrement)
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • AI算硅基生命吗,为什么?
  • k8s使用glusterfs实现动态持久化存储
  • 第二十章:异步和文件I/O.(二十三)
  • ​secrets --- 生成管理密码的安全随机数​
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • #QT(TCP网络编程-服务端)
  • (¥1011)-(一千零一拾一元整)输出
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (33)STM32——485实验笔记
  • (C++20) consteval立即函数
  • (c语言+数据结构链表)项目:贪吃蛇
  • (Java数据结构)ArrayList
  • (安卓)跳转应用市场APP详情页的方式
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • **CI中自动类加载的用法总结
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • ... 是什么 ?... 有什么用处?
  • .gitignore不生效的解决方案
  • .NET C#版本和.NET版本以及VS版本的对应关系