数组类Array
Array为数组类,它是Java中的一个最基本的存储结构,为我们提供了动态创建和访问Java数组的方法。它是最高效的,但是其容量是固定的,并且无法动态改变,且存放同一数据类型的数据。

静态类Arrays
与Collections相似,此静态类专门用于处理Array,为此提供了搜索、排序、复制等静态方法。
- equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。
- sort():用来对array进行排序。
- binarySearch():在排好序的array中寻找元素。
- Arrays.asList(array):将数组array转化为List (此种方法不正规,之后我们通过代码来分析)
我们希望将一个数组Array对象转换成列表ArrayList对象时,我们会使用Arrays.asList()方法,其实这并不是真正意义上的转成ArrayList对象了。因为该类的大小(size)是固定的。 Arrays.asList确实会返回一个ArrayList对象,但是该类是Arrays类 中一个私有静态内部类,而不是常见的java.util.ArrayList类。这个java.util.Arrays.ArrayList类具有 set(),get(),contains()等方法,但是不具有任何添加或移除元素的任何方法。  这是翻译版的api解释。。。 那换句话说,下面的方法是不正确的,但如果不进行添加操作,还是可用的。。。 
那么正确的方法应该是这下面的两种: **方法一** ArrayList的构造方法可以接受一个Collection类型的对象,而我们的 java.util.Arrays.ArrayList正好也是它的一个子类 ```java String attr[] = { "1", "2", "3" }; List list = new ArrayList(Arrays.asList(attr)); ``` **方法二(推荐)** ArrayList的构造方法可以接受一个Collection类型的对象,而我们的 java.util.Arrays.ArrayList正好也是它的一个子类 ```java String attr[] = { "1", "2", "3" }; List list = new ArrayList(attr.length); Collections.addAll(list, attr); ```



@Test
public void test1() {
String attr[] = { "1", "2", "3" };
List<String> list = Arrays.asList(attr);
System.out.println(list.getClass());
list.add("4");// 报错
for (String s : list) {
System.out.println(s);
}
}
@Test
public void test2() {
String attr[] = { "1", "2", "3" };
List<String> list = new ArrayList<String>(Arrays.asList(attr));
System.out.println(list.getClass());
list.add("4");// 不会报错
for (String s : list) {
System.out.println(s);// 1234
}
}
@Test
public void test3() {
String attr[] = { "1", "2", "3" };
List<String> list = new ArrayList<String>(attr.length);
Collections.addAll(list, attr);
System.out.println(list.getClass());
list.add("4");// 不会报错
for (String s : list) {
System.out.println(s);// 1234
}
}
本文探讨了Java中的Array类和Arrays静态类。Array是基本的存储结构,高效但容量固定;Arrays则提供搜索、排序和复制等静态方法,如equals()用于比较数组相等,sort()对数组排序,binarySearch()在已排序数组中查找元素。此外,Arrays.asList(array)可将数组转换为List,但存在限制。
845

被折叠的 条评论
为什么被折叠?



