Collections工具类的使用与Collection的区别

本文详细介绍了Java中的Collections工具类,包括排序、二分查找、复制、反转、打乱等常见操作,并通过示例代码进行演示。此外,还提到了Collection接口和Collections工具类的区别,以及Person对象按年龄排序的例子。
摘要由CSDN通过智能技术生成

         Arrays 是用来操作数组的工具类, Objects 是用来操作Object 的工具类,Collections 是用来操作 Collection 的工具类

/**
 * Collection常用方法介绍
 *
 * @author twb
 * @// TODO: 2021/3/28
 * @version 1.8
 */
public class Demo3 {
    public static void main(String[] args) {
        List<Integer> list =  new ArrayList<>();
        list.add(50);
        list.add(20);
        list.add(15);
        list.add(62);
        list.add(7);
        //sort排序
        System.out.println("排序之前:"+list.toString());
        Collections.sort(list);
        System.out.println("排序之后:"+list.toString());//默认从小到大排序,也可以根据自己的需求重写compare方法来进行排序
        
        //二分查找
        int index = Collections.binarySearch(list,20); //如果查找的元素不存在则返回负值,成功则返回该元素的下标
        System.out.println("二分查找结果:"+index);
        
        //copy复制
        List<Integer> dest = new ArrayList<>();//必须保证新的dest大小和list相等
        for (int i = 0; i < list.size(); i++) {
            dest.add(0);//以list大小为基准将dest元素初始值全部赋为0
    }
        Collections.copy(dest,list);
        System.out.println("复制之后的list:"+dest.toString());
        
        //reverse反转
        Collections.reverse(list);
        System.out.println("反转之后的list:"+list.toString());
       
        //shuffle打乱
        Collections.shuffle(list);
        System.out.println("打乱之后的list:"+list.toString());//每次运行的结果顺序都不一样

        //补充:
        //1.list转为数组
        Integer[] arr =  list.toArray(new Integer[0]);//需要给定大小,默认给0,如果大小超过list长度,则超过的部分为null
        System.out.println("list转为arr数组为:"+Arrays.toString(arr));

        //2.数组转为list
        String[] str = {"张三","李四","王五"};
        //集合是一个受限集合,不能 添加和删除元素
        List<String> listStr =  Arrays.asList(str);
        System.out.println("数组转为集合:"+listStr.toString());

        //如果是基本数据类型则需要转化为包装类
        Integer[] array = {100,200,300,400,500};
        List<Integer> listInt = Arrays.asList(array);
        System.out.println(Arrays.toString(array));
    }
}

排序之前:[50, 20, 15, 62, 7]
排序之后:[7, 15, 20, 50, 62]
二分查找结果:2
复制之后的list:[7, 15, 20, 50, 62]
反转之后的list:[62, 50, 20, 15, 7]
打乱之后的list:[7, 62, 50, 20, 15]
list转为arr数组为:[7, 62, 50, 20, 15]
数组转为集合:[张三, 李四, 王五]
[100, 200, 300, 400, 500]

 比较器比较

/**
 * @author Honson
 * @date 2022/9/2
 */
public class Person {
    private String name;
    private String age;

    public Person() {
    }

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

    public String getName() {
        return name;
    }

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

    public String getAge() {
        return age;
    }

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

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
lections.addAll(people,
                new Person("张三",13),
                new Person("李四",15 ),
                new Person("王五", 18),
                new Person("赵六", 20)
        );

        Collections.sort(people, new Comparator<Person>() {
            @Override
            public int compare(Person o1, Person o2) {
                return o1.getAge()- o2.getAge();
            }
        });

        for (int i = 0; i < people.size(); i++) {
            System.out.println(people.get(i));
        }

Collection和Collections的区别 

         Collection是一个集合接口。它提供了对集合对象进行基本操作的通用接口方法。实现该接口的类主要有List和Set,该接口的设计目标是为了各种具体的集合提供最大化的统一的操作方式。
  Collections是针对集合类的一个包裹类,它提供了一系列静态方法实现对各种集合的搜索、排序以及线程安全化等操作,其中的大多数方法都是用于处理线性表。Collections类不能实例化,如同一个工具类,服务于Collection框架。如果在使用Collections类的方法时,对应的Collection对象null,则这些方法都会抛出NullPointerException。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值