首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用Java中Collections工具类和Comparator比较器使用

使用Java中Collections工具类和Comparator比较器使用

作者头像
用户9006224
发布2022-12-21 08:49:00
发布2022-12-21 08:49:00
54400
代码可运行
举报
文章被收录于专栏:cjz的专栏cjz的专栏
运行总次数:0
代码可运行

Collections工具类

介绍

  • Collections是单列集合的工具类,里面所有的方法都是静态方法,可以对集合进行一些操作。

常用方法(常用方法

方法

说明

static void shuffle(List<?> list)

随机打乱集合元素的顺序

static void sort(List list)

集合的排序(从小到大)

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

按照指定的方式排序

代码示例

代码语言:javascript
代码运行次数:0
运行
复制
package com.itheima_01;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Test01 {
    public static void main(String[] args) {
        //创建集合
        List<Integer> list = new ArrayList<>();
        list.add(11);
        list.add(33);
        list.add(66);
        list.add(123);
        list.add(9);

        //static void shuffle(List<?> list)
        //随机打乱集合元素的顺序
        Collections.shuffle(list);
        System.out.println("打乱顺序:" + list);


        //static <T> void sort(List<T> list)
        //集合的排序(从小到大)
        Collections.sort(list);
        System.out.println("排序之后:" + list);

    }
}

字符串的比较规则

代码语言:javascript
代码运行次数:0
运行
复制
package com.itheima_01;

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

public class Test02 {
    public static void main(String[] args) {
        //创建集合
        ArrayList<String> list = new ArrayList<>();

        list.add("abc");
        list.add("def");
        list.add("abcd");
        list.add("123");
        list.add("a12");
        list.add("金泫雅");

        //排序
        Collections.sort(list);
        //从小到大
        /*
            字符串排序规则:
                从前往后一个一个判断字母的字符值
         */
        System.out.println(list);

        System.out.println('a'+0);    //97
        System.out.println('金'+0);   //26611
    }
}

Comparator比较器

compare方法的解释

代码语言:javascript
代码运行次数:0
运行
复制
参数:
    o1是要比较的元素
    o2是已经排好序的元素
返回值:
	如果返回的是一个正数,会把元素放在后面
    如果返回的是一个负数,会把元素放在前面
    如果返回的是一个零,认为元素大小相同,不移动元素

整数类型从大到小排列

代码语言:javascript
代码运行次数:0
运行
复制
package com.itheima_01;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
/*
    匿名内部类的作用是简化代码,不用单独定义子类
    格式:
        new 父类/接口(){
            重写方法;
        };
 */
public class Test03 {
    public static void main(String[] args) {
        //创建集合
        List<Integer> list = new ArrayList<>();
        list.add(11);
        list.add(33);
        list.add(56);
        list.add(123);
        list.add(9);

        //排序
        Collections.sort(list,new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                //return o1 - o2;   //从小到大
                //return o2 - o1;     //从大到小
                return -1;
            }
        });

        System.out.println(list);
    }
}

自定义类型按照年龄从小到大排列

代码语言:javascript
代码运行次数:0
运行
复制
package com.itheima_01;

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

public class Test04 {
    public static void main(String[] args) {
        //创建集合
        ArrayList<Student> list = new ArrayList<>();

        //添加
        list.add(new Student("迪丽热巴",38));
        list.add(new Student("金泫雅",23));
        list.add(new Student("唐嫣",28));

        //排序
        //存储的是学生对象,学生对象没有排序比较规则
        //Collections.sort(list);

        //给出排序规则
        Collections.sort(list, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                //要求:年龄从小到大排序
                return o1.getAge() - o2.getAge();
            }
        });

        //打印
        System.out.println(list);
    }
}

自定义类型按照年龄从小到大排列,如果年龄相同,姓名短的在前,姓名长的在后

代码语言:javascript
代码运行次数:0
运行
复制
package com.itheima_01;

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

public class Test05 {
    public static void main(String[] args) {
        //创建集合
        ArrayList<Student> list = new ArrayList<>();

        //添加元素
        list.add(new Student("唐嫣",38));
        list.add(new Student("金泫雅",23));
        list.add(new Student("迪丽热巴",28));
        list.add(new Student("貂蝉",28));
        list.add(new Student("杨幂",28));

        //排序
        //按照年龄从小到大排列,如果年龄相同,姓名短的在前,姓名长的在后
        Collections.sort(list, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                 if(o1.getAge() == o2.getAge()){
                     //年龄相同
                     //比较姓名从短到长
                     return o1.getName().length() - o2.getName().length();
                 }else{
                     //年龄不相同
                     //年龄从小到大
                     return o1.getAge() - o2.getAge();
                 }
            }
        });
        //打印
        System.out.println(list);
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Collections工具类
  • Comparator比较器
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档