16 数组

来源:互联网 发布:linux 声卡驱动 编辑:程序博客网 时间:2024/05/24 15:41

16 数组

16.7 Arrays实用功能

  1. equals() 用于比较两个数组是否相等
  2. fill() 用同一个值填充数组各个位置
  3. sort() 用于对数组排序
  4. binarySearch() 在已经排序的数组中查找元素
  5. toString()
  6. hashCode()

此外,Arrays.asList() 接收任意的序列或者数组作为参数,并将其转变为List容器。

16.7.1 复制数组

java标准库提供static方法System.arraycopy()

arraycopy()需要的参数有,源数组,表示从源数组什么位置开始复制的偏移量,目标数组,表示从目标数组什么位置开始复制的偏移量,需要复制的元素个数。当然,对数组的任何越界操作都会导致异常。

然而,如果复制对象数组,那么只是复制了对象的引用,而不是对象本身的拷贝,这被称作浅复制。

System.arraycopy()不会自动包装和拆包,两个数组必须具有相同的确切类型。

16.7.2 数组的比较

数组相等的条件是元素个数必须相等,并且对应位置的元素使用equals()判断相等。

16.7.3 数组元素的比较

  1. 实现java.lang.Comparable接口,只有一个compareTo()方法。
  2. 可以创建一个实现了Comparator接口的类,实现compare()方法。并将此类的实例传入Array.sort()方法。

16.7.5 在已经排序的数组中查找

若找到了目标,Arrays.binarySearch()的返回值大于等于0,否则返回负值,表示若要保持数组的排序状态此目标元素应该插入的位置。这个负值的计算方式为:
-(插入点)-1
插入点指第一个大于查找元素在数组中的位置。

如果使用了Comparator排序了某个对象数组,使用binarySearch()时必须提供同样的Comparator。