java 集合(2)--------数组
一.java数组
1.java数组与其他容器的比较
(1)效率----------访问效率最好;
(2)可以持有primitives;
(3)长度固定;
(4)类型识别;
2.数组工具类(Arrays)
提供了五个基本方法:
(1)填充------用来进行填充的fill();
在使用fill()来填充一个数组时,该数组只能被填充为同一个值
(2)排序------用来进行排序的sort();
排序需要使用比较器,comparable和compartor
(3)查找------用来进行查找的binarySearch();
一定要先排序后查找,如果有两个相同的值不确定会返回那个值
(4)比较------用来比较两个数组是否相等的equals();
(5)数组到容器的转换------asList()返回一个受制定数组支持的固定大小的列表(此方法会产生别名效应,慎用)。此方法同collection.toArray一起充当了基于数组的API与基于collection的API之间的桥梁;
返回的List有两个特点:
a.List的长度是固定的;
b.会产生别名效应;
4.数组的复制
java标准类库中提供了一个System.arraycopy()的方法,相比for循环,它以更快的速度拷贝数组。
5.数组的比较
两个数组要想完全相等,它们必须有相同数量的元素,而且数组的每个元素必须与量一个数组的相对应的位置上得元素相等。元素的相等性,用equals()判断。对于primitive,会使用wrapper类的equals().
6.数组元素的比较
另章讨论
7.数组的排序
有了内置的排序方法之后,你就能对任何数组排序了,不论是primitive的还是对象数组,只要它实现了Comparable接口或有一个与之相关的Comparator对象就行了。
Java标准类库所用的排序算法已经作了优化————对primitive,它用得时“快速排序”,对对象,它用得是“稳定合并排序”。
8.查询有序数组
一旦数组排完序,你就能使用Arrays.binarySearch()进行快速查询了。切忌对一个尚未排序的数组使用此方法。
如果此方法找到了,即返回一个大于或等于0,表示此元素的下标,否则返回一个负值,表示这个值应该插在哪个位置。
?
?