javaSE 集合框架(三)—— Collections工具类

目录

一、Collections工具类

二、常用方法


一、Collections工具类

特点01:类似于Arrays类是操作数组的工具类,Collecitons是一个操作List/Set/Map的工具类(注意不是只能操作Collection接口,还能操作Map接口)

特点02:静态static方法,可以直接通过Collections类名去调用

二、常用方法

2.1 排序操作(只针对有序的List)

        reverse(List): 反转List中元素的顺序

        shuffle(List): 对List集合元素进行随机排序

        sort(List): 自然排序,升序排序

        sort(List, Comparator):定制排序

        swap(List, int i,int j):交换下标为i的元素和下标为j的元素

        ArrayList list = new ArrayList();
        list.add(-2);
        list.add(98);
        list.add(25);
        list.add(0);
        list.add(25);
        list.add(25);

        //1)reverse()
        Collections.reverse(list);
        System.out.println(list);
        //2)shuffle()
        Collections.shuffle(list);
        System.out.println(list);
        //3)sort()
        Collections.sort(list);
        System.out.println(list);
        //4)swap()
        Collections.swap(list, 2,3);
        System.out.println(list);

2.2 查找、替换操作

        Object max(Collection):根据元素的自然排序,返回最大值

        Object max(Collection,Comparator):根据元素的定制排序,返回最大值

        Object min(Collection):根据元素的自然排序,返回最小值

        Object min(Collection,Comparator):根据元素的定制排序,返回最小值

        int frequency(Collection, Object):返回指定元素在Collection中出现了几次

        void copy(List dest, List src):将src中的内容复制到dest中

        boolean replaceAll(List list, Object oldVal, Object newVal):使用新值替换List对象的所有旧值

        ArrayList list = new ArrayList();
        list.add(-2);
        list.add(98);
        list.add(25);
        list.add(0);
        list.add(25);
        list.add(25);

        //1)max
        System.out.println(Collections.max(list)); //98
        //2)min
        System.out.println(Collections.min(list)); //-2
        //3)frequency
        System.out.println(Collections.frequency(list, 25));//3

copy方法有一个需要注意的地方:

 为什么会报这个错误?需要点开copy函数查看内部逻辑

 我们的src里放了6个元素,size为6,dest里一个元素都没有放,size为0。所以满足了上面的if语句,报出异常。所以我们要想办法把dest的size“撑开”,当然addAll可以行

list2.addAll(list);

但这样并不是一个好办法。 

正确的写法为:

        ArrayList list = new ArrayList();
        list.add(-2);
        list.add(98);
        list.add(25);
        list.add(0);
        list.add(25);
        list.add(25);

        //4) copy
        List list2 = Arrays.asList(new Object[list.size()]);
        Collections.copy(list2,list);

        System.out.println(list2);

2.3 同步控制 

前面已经说过ArrayList和HashMap是线程不安全的,即便是为了线程安全我们也不会使用Vector或HashTable。而是使用Collections工具类的synchronizedXxx()方法

面试题:Collection和Collections的区别

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值