Collections工具类的使用

*Collections工具类的使用*

小案例

package com.collectionpractise;

import javax.sound.midi.Soundbank;
import java.lang.reflect.Array;
import java.util.*;

/**
 * Collections集合工具类的使用
 */
public class CollectionDemo01 {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        list.add(20);
        list.add(10);
        list.add(30);
        list.add(60);
        list.add(80);
        list.add(90);
        list.add(70);
        //sort排序
        System.out.println("排序之前:"+list);
        Collections.sort(list);//采用的是升序
        System.out.println("排序之后:"+list);

        //binarySearch 对集合中的元素进行二分查找,再进行二分查找的时候一定是要先进行排序。
        int i = Collections.binarySearch(list, 11);//如果没有找到的话,就返回一个负值
        System.out.println("找到还是没有找到:"+i);
        //copy复制
        ArrayList<Integer> listcopy = new ArrayList<Integer>();
        for (int j = 0; j <list.size() ; j++) {
            listcopy.add(0);
        }
        Collections.copy(listcopy,list);//如果直接进行copy的话会报错java.lang.IndexOutOfBoundsException: Source does not fit in dest 。解决方案:先给目标集合传点数据,就好了
        System.out.println(listcopy);

        //reverse 反转
        Collections.reverse(list);
        System.out.println("反转之后:"+list);
        //shuffle 打乱 洗牌
        Collections.shuffle(list);
        System.out.println("打乱之后:"+list);

        //补充:list转换成数组
        System.out.println("=============list转换成数组================");
        Integer[] arr = list.toArray(new Integer[0]);//如果不够的话,会进行补齐 如果是0的话会自动进行扩容。
        System.out.println(arr.length);
        System.out.println(Arrays.toString(arr));

        //数组转成集合
        System.out.println("==========数组转成集合============");
        String[] names={"张三","李四","王五"};
        //将数组转换成集合是一个受限和,不能够添加和删除集合中的元素
        List<String> list1 = Arrays.asList(names);
//        list1.add("赵六");//java.lang.UnsupportedOperationException
        System.out.println(list1);
        //另外需要注意:把基本数据类型转换成集合时,需要修改为包装类型
//        int[] nums={100,200,300,400,500};
//        List<int[]> ints = Arrays.asList(nums);
//        System.out.println(ints.toString());  //这样写的话,最后是遍历不出来集合中的元素的
        Integer[] nums={100,200,300,400,500};
        List<Integer> ints = Arrays.asList(nums);
        System.out.println(ints.toString());//这样写的话,最后是能够遍历出来集合中的元素的
    }
}

运行结果:

排序之前:[20, 10, 30, 60, 80, 90, 70]
排序之后:[10, 20, 30, 60, 70, 80, 90]
找到还是没有找到:-2
[10, 20, 30, 60, 70, 80, 90]
反转之后:[90, 80, 70, 60, 30, 20, 10]
打乱之后:[70, 60, 30, 80, 10, 90, 20]
=============list转换成数组================
7
[70, 60, 30, 80, 10, 90, 20]
==========数组转成集合============
[张三, 李四, 王五]
[100, 200, 300, 400, 500]
原文地址:https://www.cnblogs.com/dongyaotou/p/14349945.html