Collections集合工具类

目录

工具类常用方法 addAll(); shuffle();

自定义类型排序Hotel类

源码图奉上有助于理解


工具类常用方法 addAll(); shuffle();

package cn.itcast.day12.demo02;

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

/**
 * @author admin
 * @version 1.0.0
 * @ClassName Demo10.java
 * @Description TODO
 * @createTime 2021年09月25日 11:15:00
 */

/**
 * java.util.Collections是集合工具类,从来对集合进行操作 部分方法如下
 *      Public static <T> void sort (List<T> list);将集合中元素按照默认规则排序
 *
 * 注意:
 *      sort(List<T> list)使用前提
 *      别排序的集合里面存储的元素,必须实现Comparable,重写接口中的compareTo方法 即定义排序的规则
 *
 *Comparable接口排序的规则
 * 自己(this) - 参数 :升序
 * 反过来就是降序
 *
 *
 */

public class Demo10 {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(5);
        list.add(3);
        System.out.println("list = " + list);//list = [1, 5, 3]
        //Public static <T> void sort (List<T> list);将集合中元素按照默认规则排序
        /**
         * Collections方法只能传list集合 不能传set集合 因为是static方法 所以可以直接类名.方法进行调用
         */
        Collections.sort(list);//默认是升序
        System.out.println(list);//[1, 3, 5]

        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("aa");
        arrayList.add("dd");
        arrayList.add("bb");
        arrayList.add("cc");
        System.out.println("arrayList = " + arrayList);//arrayList = [aa, dd, bb, cc]
        Collections.sort(arrayList);
        System.out.println(arrayList);//[aa, bb, cc, dd]

        System.out.println("===============================");
        ArrayList<Hotel> hotelArrayList = new ArrayList<>();
        hotelArrayList.add(new Hotel("zhangsan",15));
        hotelArrayList.add(new Hotel("lisi",30));
        hotelArrayList.add(new Hotel("wangwu",18));
        System.out.println("hotelArrayList = " + hotelArrayList);
        //hotelArrayList = [Hotel{name='zhangsan', age=15}, Hotel{name='lisi', age=30}, Hotel{name='wangwu', age=18}]

        Collections.sort(hotelArrayList);
        //这个地方如果没有实现Comparable接口 重写ComparTo方法的话 是报错的
        System.out.println(hotelArrayList);
        /**
         * return this.getAge() - o.getAge();
         * return this.age - o.age; 这两个方法任选其一 重写ComparTo方法之后 都可以进行正常排序
         *
         */
        //[Hotel{name='zhangsan', age=15}, Hotel{name='wangwu', age=18}, Hotel{name='lisi', age=30}]
    }
}

自定义类型排序Hotel

package cn.itcast.day12.demo02;

/**
 * @author admin
 * @version 1.0.0
 * @ClassName Hotel.java
 * @Description TODO
 * @createTime 2021年09月25日 11:26:00
 */

public class Hotel implements Comparable<Hotel>{
    private String name;
    private int age;

    public Hotel() {
    }

    public Hotel(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Hotel{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    /**
     * 重写排序的规则
     * @param o
     * @return
     */
    @Override
    public int compareTo(Hotel o) {
//        return 0;//认为元素都是相同的
        //自定义比较的规则 比较两个人的年龄(this,参数Person)
//        return this.getAge() - o.getAge(); //年龄升序排序
//        return this.age - o.age;
        return o.age - this.age;//年龄降序排序

    }
}

源码图奉上有助于理解

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

妙趣生花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值