Java集合框架(五)Colletions工具类

Java集合框架(五)Colletions工具类

Colletions工具类

注意:

  • Colletions是工具类,Colletion是根接口,不要搞混

概念

  • 集合工具类,定义了除了存取以外的集合常用方法

方法

  • public static void reverse(List<?> list) //反转集合中元素的顺序
    
  • public static void shuffle(List<?> list) //随机重置集合元素的顺序
    
  • public static void sort(List<?> list) //升降排序(元素类型必须实现Comparable接口)
    
  • public static int binarySearch(list,a) //查找a在list中的下标,如果没有a,则返回为负数
    
  • public static void copy(List<?> list1,List<?> list2) //将list2的内容复制到list1上,list2的大小必须要和list1的大小一致才行
    

举例

public class Demo05 {
    public static void main(String[] args) {
        List<Integer> list=new ArrayList<>();
        list.add(30);
        list.add(20);
        list.add(10);
        list.add(100);
        list.add(50);
        System.out.println("--------元素个数---------");
        System.out.println(list.size());
        System.out.println("--------元素的内容(键值)---------");
        System.out.println(list.toString());
        System.out.println("---------------------sout排序------------------------");
        //调用Collections类中的sort方法
        Collections.sort(list);
        System.out.println(list);
        System.out.println("----------------------binarySearch查找--------------------");
        int bs = Collections.binarySearch(list,50);
        System.out.println("50的下标是:"+bs);
        System.out.println("------------------------copy复制---------------------------");
        List<Integer> list2=new ArrayList<>();
        //必须list2和list的大小一致才能复制list中的内容,所以需要for循环将list2的空间扩充到和list一样
        for(int i=0;i<list.size();i++){
            list2.add(0);//放一个数据就扩充了一个空间
        }
        Collections.copy(list2,list);
        System.out.println("--------元素个数---------");
        System.out.println(list2.size());
        System.out.println("--------元素的内容(键值)---------");
        System.out.println(list2.toString());
        System.out.println("-------------------------reverse反转-----------------------------");
        Collections.reverse(list);
        System.out.println("--------元素个数---------");
        System.out.println(list.size());
        System.out.println("--------元素的内容(键值)---------");
        System.out.println(list.toString());
        System.out.println("------------------------shuffle打乱-----------------------------");
        Collections.shuffle(list);
        System.out.println("--------元素个数---------");
        System.out.println(list.size());
        System.out.println("--------元素的内容(键值)---------");
        System.out.println(list.toString());
    }
}
//输出:
--------元素个数---------
5
--------元素的内容(键值)---------
[30, 20, 10, 100, 50]
---------------------sout排序------------------------
[10, 20, 30, 50, 100]
----------------------binarySearch查找--------------------
50的下标是:3
------------------------copy复制---------------------------
--------元素个数---------
5
--------元素的内容(键值)---------
[10, 20, 30, 50, 100]
-------------------------reverse反转-----------------------------
--------元素个数---------
5
--------元素的内容(键值)---------
[100, 50, 30, 20, 10]
------------------------shuffle打乱-----------------------------
--------元素个数---------
5
--------元素的内容(键值)---------
[30, 50, 20, 100, 10]

补充

list转成数组

  • 方法:

    A[] a = b.toArray(new A[x]); //将List类型的b转换为A数组类型返回给a,其中A[x]中填的数字无所谓,x写0就可以了,最终a和b的长度是一样的
    //如果写的x小于b的长度,则最终a和b长度一样;
    //如果写的x大于b的长度,则最终a的长度比b长,且为x,而数组a中也会多出许多默认值(null)
    
  • 举例:

    public class Demo06 {
        public static void main(String[] args) {
            List<Integer> list=new ArrayList<>();
            list.add(30);
            list.add(20);
            list.add(10);
            list.add(100);
            list.add(50);
            System.out.println("--------元素个数---------");
            System.out.println(list.size());
            System.out.println("--------元素的内容(键值)---------");
            System.out.println(list.toString());
            System.out.println("----------------list转数组-------------------");
            Integer[] a=list.toArray(new Integer[0]);
            System.out.println("数组a的长度为:"+a.length);
            System.out.println(Arrays.toString(a));
        }
    }
    //输出:
    --------元素个数---------
    5
    --------元素的内容(键值)---------
    [30, 20, 10, 100, 50]
    ----------------list转数组-------------------
    数组a的长度为:5
    [30, 20, 10, 100, 50]
    

数组转成集合

  • 方法1:

    List<String> list2=Arrays.asList(a);//通过Arrays的asList方法,将a类型转为List类型并返回给list2
    //转换后的集合受到限制不能添加和删除元素
    
  • 注意:

    • 转换后的集合受到限制不能添加和删除元素
    • 转换为集合之前最好用包装类型创建数组或者将基础类型转换为包装类型,否则用基础类型会造成转换集合麻烦(集合不支持基础类型)
  • 举例:

    public class Demo07 {
        public static void main(String[] args) {
            String[] a = {"张三","李四","王五","赵六"};
            Integer[] b = {1,5,2,7,5,8};
            System.out.println("----------------数组转为集合-------------------");
            List<String> list2=Arrays.asList(a);
            List<Integer> list3=Arrays.asList(b);
            System.out.println(list2.toString());
            System.out.println(list3.toString());
        }
    }
    //输出:
    ----------------数组转为集合-------------------
    [张三, 李四, 王五, 赵六]
    [1, 5, 2, 7, 5, 8]
    
posted @ 2022-02-08 18:28  史小鹏  阅读(85)  评论(0)    收藏  举报