1.数组类Array
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 } } }