当前位置 博文首页 > HU1656的博客:Arrays,Collections,Array,Collection的区别与联
一.定义
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