Java工具类Collections详解

Java工具类Collections

java.util.Collections:是集合工具类,注意它不是集合类而是集合的工具类,用于操作集合类。

Collections常用的API

方法名称

说明

public static <T>boolean addAll(Collection<T>c,T...elements)

批量添加元素。(只能添加类型为T的单列集合)

public static void shuffle(List<?>list)

打乱List集合元素的顺序

public static <T>void sort(List<T>list)

排序(按默认规则)

public static <T>void sort(List<T>list,Comparator<T>c)

根据指定的规则进行排序

public static <T>int binarysearch(List<T>list,  T key)

以二分查找法查找元素

public static <T>void copy(List<T>dest,List<T>src)

拷贝集合中的元素

public static <T>int fill(List<T>list,T obj)

使用指定的元素填充集合

public static <T>void max/min(Collection<T>coll)

根据默认的自然排序获取最大/小值

public static <T>void swap(List<?>list,int i,int j)

交换集合中指定位置的元素

示例用法:

//addAll  批量向列表中添加元素
//1.创建集合对象
ArrayList<String>list =new ArrayList<>();
//2.批量添加元素
Collections.addAll(list,"abc","bcd","qwer","df","asdf","zxcv","1234","qwer");
//3.打印集合
System.out.println(list);


//shuffle打乱集合
Collections.shuffle(list);
System.out.println(list);

其他方法示例代码:

/*

        public static <T> void sort(List<T> list)                       排序

        public static <T> void sort(List<T> list, Comparator<T> c)      根据指定的规则进行排序

        public static <T> int binarySearch (List<T> list,  T key)       以二分查找法查找元素

        public static <T> void copy(List<T> dest, List<T> src)          拷贝集合中的元素

        public static <T> int fill (List<T> list,  T obj)               使用指定的元素填充集合

        public static <T> void max/min(Collection<T> coll)              根据默认的自然排序获取最大/小值

        public static <T> void swap(List<?> list, int i, int j)         交换集合中指定位置的元素

     */





        System.out.println("-------------sort默认规则--------------------------");

        //默认规则,需要重写Comparable接口compareTo方法。Integer已经实现,按照从小打大的顺序排列

        //如果是自定义对象,需要自己指定规则

        ArrayList<Integer> list1 = new ArrayList<>();

        Collections.addAll(list1, 10, 1, 2, 4, 8, 5, 9, 6, 7, 3);

        Collections.sort(list1);

        System.out.println(list1);





        System.out.println("-------------sort自己指定规则规则--------------------------");

        Collections.sort(list1, new Comparator<Integer>() {

            @Override

            public int compare(Integer o1, Integer o2) {

                return o2 - o1;

            }

        });

        System.out.println(list1);



        Collections.sort(list1, (o1, o2) -> o2 - o1);

        System.out.println(list1);



        System.out.println("-------------binarySearch--------------------------");

        //需要元素有序

        ArrayList<Integer> list2 = new ArrayList<>();

        Collections.addAll(list2, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        System.out.println(Collections.binarySearch(list2, 9));

        System.out.println(Collections.binarySearch(list2, 1));

        System.out.println(Collections.binarySearch(list2, 20));



        System.out.println("-------------copy--------------------------");

        //把list3中的元素拷贝到list4中

        //会覆盖原来的元素

        //注意点:如果list3的长度 > list4的长度,方法会报错

        ArrayList<Integer> list3 = new ArrayList<>();

        ArrayList<Integer> list4 = new ArrayList<>();

        Collections.addAll(list3, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        Collections.addAll(list4, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);

        Collections.copy(list4, list3);

        System.out.println(list3);

        System.out.println(list4);



        System.out.println("-------------fill--------------------------");

        //把集合中现有的所有数据,都修改为指定数据

        ArrayList<Integer> list5 = new ArrayList<>();

        Collections.addAll(list5, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        Collections.fill(list5, 100);

        System.out.println(list5);



        System.out.println("-------------max/min--------------------------");

        //求最大值或者最小值

        ArrayList<Integer> list6 = new ArrayList<>();

        Collections.addAll(list6, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

        System.out.println(Collections.max(list6));

        System.out.println(Collections.min(list6));



        System.out.println("-------------max/min指定规则--------------------------");

        // String中默认是按照字母的abcdefg顺序进行排列的

        // 现在我要求最长的字符串

        // 默认的规则无法满足,可以自己指定规则

        // 求指定规则的最大值或者最小值

        ArrayList<String> list7 = new ArrayList<>();

        Collections.addAll(list7, "a","aa","aaa","aaaa");

        System.out.println(Collections.max(list7, new Comparator<String>() {

            @Override

            public int compare(String o1, String o2) {

                return o1.length() - o2.length();

            }

        }));



        System.out.println("-------------swap--------------------------");

        ArrayList<Integer> list8 = new ArrayList<>();

        Collections.addAll(list8, 1, 2, 3);

        Collections.swap(list8,0,2);

        System.out.println(list8);

    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

唐骁虎

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

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

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

打赏作者

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

抵扣说明:

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

余额充值