当前位置 博文首页 > HU1656的博客:Arrays,Collections,Array,Collection的区别与联

    HU1656的博客:Arrays,Collections,Array,Collection的区别与联

    作者:[db:作者] 时间:2021-08-02 15:44

    一.定义

    1.Collection
    在java.util下的一个接口,它是各种集合结构的父接口。继承与他的接口主要有Set ,Queue和List.

    2.工具类Collections
    java.util下的一个专用静态类,它里面包含各种有关集合操作的静态方法。 提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。

    3.Array
    Java中最基本的一个存储结构。 提供了动态创建和访问 Java 数组的方法。 该类包含用于操作数组的各种方法(如排序和搜索)。它无法判断其中实际存有多少元素,length只是告诉我们数组的容量。

    3.工具类Arrays
    此静态类专门用来操作数组,提供搜索、排序、复制等静态方法。

    二.联系

    为了方便对Array对象、Collection对象进行操作,Java中提供了Arrays类和Collections类对其进行操作。

    Arrays和Collections是Java集合框架中的两个工具类。

    Arrsys:是 数组 的工具类,提供了对 数组 操作的工具方法。
    Collections:是 集合对象 的工具类,提供了操作 集合 的工具方法。

    注意:
    Arrays和Collections中所有的方法都为静态的,不需要创建对象,直接使用类名调用即可。( 类名.方法名() )

    三.Collections和Arrays中的常用方法

    1.Collections

    (1)对list进行二分查找: 前提是该集合中的元素一定要有序。

    Collections.binarySearch(list,key); 

    求key对应的元素在list中所在的索引也就是下标 (元素有自然顺序)

    //必须根据元素自然顺序对列表进行排序

    //要求list 集合中的元素都是Comparable 的。

    Collections.binarySearch(list,key,Comparator); 

    如果是自定义类求键key的索引 , 必须要传入比较器

    (2)对list集合进行排序

    Collections.sort(list);  

    对 list进行排序,其实使用的是list容器中的对象的compareTo方法,因为对象有自然顺序的比较,也就是实现了Comparable接口

    Collections.sort(list,comaprator); 

    按照指定比较器进行排序 ,常用于自己定义的类,没有自然顺序的比较
    要想对它进行比较,必须定义一个比较器,用来描述比较的规则。

    (3)对集合中的元素取最大值或者最小值

    Collections.max(list)  ;
    Collections.max(list,comparator)   不具备自然顺序的 
    Collections.min(list) ;
    Collections.min(list,comparator)     不具备自然顺序的 

    (4)对list集合中的元素进行反转

    Collections.reverse(list);    

    不需要传入比较器 因为没有比较过程

    (5)对list集合中的元素进行位置的置换

    Collections.swap(list,x,y); 

    2.Arrays

    Arrays.binarySearch(array,key);	//二分查找 
    Arrays.copyOf(array,newLengh);		 //复制
    Arrays.copyOfRange(array,from,to);	//复制部分 
    Arrays.sort(array);		//排序
    Arrays.fill(array);		//填充
    Arrays.toString(array);		//字符串返回 
    Arrays.asList(array);		//将数组转为List 

    四.集合和数组的区别

    1.集合:只能存储引用数据类型

    List<Integer> list=new ArrayList<>();

    2.数组:既可以存储基本数据类型,也可以存储引用数据类型。当它存储 引用类型的时候数组就叫做对象数组。
    例如:用数组存储5个学生对象。

    3.区别:
    a.长度区别:
    数组长度固定
    集合长度可变

    b.内容区别:
    数组可以是引用类型,也可以是基本数据类型
    集合只能是引用类型

    c.元素内容:
    数组只能存储同一种类型
    集合可以存储不同类型

    五.总结

    总之我们要记住:
    array是JAVA反射里面的一个类,arrays是java.util里面的一个工具类, 用来操作数组.

    从用法上来讲Arrays用于数组,Collections用于集合。

    cs