数组

1、数组的特殊性

  • 数组与其他种类的容器之间的区别有三方面:效率、类型和保存基本类型的能力。

  • 在java中,数组是一种效率最高的存储和随机访问对象引用序列的方式。数组就是一个简单的线性序列,这使得元素访问非常快速。但为这种速度多付出的代价是数组对象的大小被固定,并且在其生命周期中不可改变。

  • 随着泛型和自动包装机制的出现,数组硕果仅存的优点就是效率。要解决更一般化的问题,数组就可能会受到过多的限制,因此在这些情形下还是会使用容器。

2、Arrays实用功能

  • 在讨论Arrays方法之前,先看看另一个很有用的方法:System.arraycopy()。它用来复制数组比for循环复制快很多。此方法的参数有:源数组,表示从源数组中的什么位置开始复制的偏移量,目的数组,表示从目的数组的什么位置开始复制的偏移量,需要复制的元素个数。

  • fill()方法:只能用同一个值填充数组各个位置。

  • equals():用于比较两个数组是否相等(deepEquals()用于多为数组)。数组相等的条件是元素个数必须相等,并且对应位置的元素也相等。

  • 数组元素的比较:java有两种方式来提供比较功能。

           第一种是实现java.lang.Comparable接口。此接口只有compareTo()一个方法。此方法接收另一个Object为参数,如果当前对象小于参数则返回负值,如果相等则返回零,如果当前对象大于参数则返回正值。

           第二种是可以创建一个实现Comparator接口的单独的类。这个接口有compare()和equals()两个方法。不一定要实现equals()方法,除非有特许的性能需要。

  • 数组排序:sort()方法,java标准库中的排序算法针对正排序的特殊类型进行了优化——针对基本类型设计的“快速排序”,以及针对对象设计的“稳定归并排序”。

  • 在已排序的数组中查找:binarySearch()。

  • toString():产生数组的String表示。

  • hashCode():产生数组的散列码。

  • asList():接受任意的序列或数组作为其参数,并将其转变为List容器。

你可能感兴趣的:(数组)