java-工具类Collections和Arrays的设计和区别

Arrays

1.做用
看类的名字,就知道是对数组(数据类型[])进行各类操做。例如,排序、查找、复制等。算法

排序的算法是归并排序。
查找的算法是二分查找。
复制是调用System.arraysCopy()。数组

2.官方API
public class Arrays
extends Object
This class contains various methods for manipulating arrays (such as sorting and searching). This class also contains a static factory that allows arrays to be viewed as lists.
The methods in this class all throw a NullPointerException, if the specified array reference is null, except where noted.
这个类包含各类操做数组的方法,例如,排序、查找等。这个类也包含了一个静态工厂方法,容许数组被做为集合(list)查看。
若是指定的数组引用是null,那么方法会抛出NullPointerException。app

The documentation for the methods contained in this class includes briefs description of the implementations. Such descriptions should be regarded as implementation notes, rather than parts of the specification. Implementors should feel free to substitute other algorithms, so long as the specification itself is adhered to. (For example, the algorithm used by sort(Object[]) does not have to be a MergeSort, but it does have to be stable.)
方法的文档包含了实现的简单介绍,可是不属于规范的一部分。你能够用别的算法代替Arrays的算法,只要遵照规范便可。
举个例子,sort()的算法能够不是使用归并排序,可是该算法必定要是稳定的。ide

This class is a member of the Java Collections Framework.
这个类是Java Collections Framework的一部分。ui

Collections

1.做用
看类的名字,就知道是对集合类(Collection的子类)进行操做。例如,排序等。this

排序的算法也是合并排序,调用的是Arrays.sort()。对象

2.官方API
public class Collections
extends Object
This class consists exclusively of static methods that operate on or return collections. It contains polymorphic algorithms that operate on collections, "wrappers", which return a new collection backed by a specified collection, and a few other odds and ends.
这个类只包含操做或返回集合的静态方法。它包含了多种算法...。排序

The methods of this class all throw a NullPointerException if the collections or class objects provided to them are null.
若是方法的参数是null,那么会抛出NullPointerException 。ip

The documentation for the polymorphic algorithms contained in this class generally includes a brief description of the implementation. Such descriptions should be regarded as implementation notes, rather than parts of the specification. Implementors should feel free to substitute other algorithms, so long as the specification itself is adhered to. (For example, the algorithm used by sort does not have to be a mergesort, but it does have to be stable.)
同上。ci

The "destructive" algorithms contained in this class, that is, the algorithms that modify the collection on which they operate, are specified to throw UnsupportedOperationException if the collection does not support the appropriate mutation primitive(s), such as the set method. These algorithms may, but are not required to, throw this exception if an invocation would have no effect on the collection. For example, invoking the sort method on an unmodifiable list that is already sorted may or may not throw UnsupportedOperationException.

This class is a member of the Java Collections Framework.

排序

1.Arrays
Arrays.sort()
2.Collections
Collections.sort()。
调用的也是Arrays.sort()。具体来讲是,第一步,先把集合转换为数组,第二步,调用Arrays.sort()。

复制对象

1.Arrays
Arrays.copyOf()。
调用的是System.arrayCopy()。

Arrays.copyOf()和System.arrayCopy()没有什么区别,只是传参有点不一样。

查找

相关文章
相关标签/搜索