Array与Arrays的区别(数组转list)
Java中最基本的一个存储结构。
提供了动态创建和访问 Java 数组的方法。其中的元素的类型必须相同。
效率高,但容量固定且无法动态改变。
它无法判断其中实际存有多少元素,length只是告诉我们array的容量。
2、静态类Arrays
此静态类专门用来操作array ,提供搜索、排序、复制等静态方法。
equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。
sort():用来对array进行排序。
binarySearch():在排好序的array中寻找元素。
Arrays.asList(array):将数组array转化为List (此种方法不正规)
注意:
为了实现把一个数组转换成一个ArrayList,很多Java程序员会使用如下的代码:

Arrays.asList确实会返回一个ArrayList对象,但是该类是Arrays类 中一个私有静态内部类,而不是常见的java.util.ArrayList类。这个java.util.Arrays.ArrayList类具有 set(),get(),contains()等方法,但是不具有任何添加或移除元素的任何方法。因为该类的大小(size)是固定的。为了创建出一个真正的ArrayList,代码应该如下所示:

我们知道,ArrayList的构造方法可以接受一个Collection类型的对象,而我们的 java.util.Arrays.ArrayList正好也是它的一个子类。实际上,更加高效的代码示例是:

(正确的做法是test2和test3的做法)
package Array2List;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
public class Array2List {
/**
* 错误的做法 此种方法返回的list不具有任何添加或移除元素的任何方法。因为该类的大小(size)是固定的。
*/
@Test
public void test1() {
String attr[] = { "1", "2", "3" };
List<String> list = Arrays.asList(attr);
list.add("4");// 报错
for (String s : list) {
System.out.println(s);
}
}
/**
* 正确的做法
* ArrayList的构造方法可以接受一个Collection类型的对象,而我们的 java.util.Arrays.ArrayList正好也是它的一个子类
*/
@Test
public void test2() {
String attr[] = { "1", "2", "3" };
List<String> list = new ArrayList<String>(Arrays.asList(attr));
list.add("4");// 不会报错
for (String s : list) {
System.out.println(s);// 1234
}
}
/**
* 更加高效的做法
* ArrayList的构造方法可以接受一个Collection类型的对象,而我们的 java.util.Arrays.ArrayList正好也是它的一个子类
*/
@Test
public void test3() {
String attr[] = { "1", "2", "3" };
List<String> list = new ArrayList<String>(attr.length);
Collections.addAll(list, attr);
list.add("4");// 不会报错
for (String s : list) {
System.out.println(s);// 1234
}
}
}

