List 接口—— ArrayList ( Array )
作者: zccst
1. Arrays 类
java.util.Arrays 类定义了多种数组操作方法,实现了对数组元素的排序、填充、转换为列表或字符串形式、增强的检索和深度比较等功能。常用 static 方法如下:
public static List asList(Object O); // 返回数组的列表( List )形式。
public static void sort(< 类型 >[] a); // 排序
public static void fill(int[] a,int val) // 把 a 数组所有元素值都赋值为 val
public static int binarySearch(int[], int key); // 在排好序的 Arrays 中二分查找元素。
public static StringtoString(int[] a); // 将一个数组转换成一个字符串
注 1 : Array 是数组, Arrays 是数组类。
注 2 : Arrays.asList () 返回的是 List, 而且是一个定长的 List ,所以不能转换为 ArrayList ,只能转换为 AbstractList 。原因在于 asList () 方法返回的是某个数组的列表形式,返回的列表只是数组的另一个视图,而数组本身并没有消失,对列表的任何操作最终都反映在数组上。 所以不支持 remove,add 方法。
例如: TestArrays.java
import java.util.List;
import java.util.Arrays;
public class TestArrays {
public static void main(String args[])
{
Integer [] a = {3, 25, 12, 79, 48};
System. out .println(a);
System. out .println(Arrays.toString (a));
Arrays.sort (a);
System. out .println(Arrays.toString (a));
int idx = Arrays.binarySearch (a, 25);
System. out .println(idx);
List list = Arrays.asList (3, 4, 5);
System. out .println(list);
list.set(2, 66) ;
System. out .println(list);
System. out .println(Arrays.toString (a));
}
}
输出结果:
[Ljava.lang.Integer;@de6ced
[3, 25, 12, 79, 48]
[3, 12, 25, 48, 79]
2
[3, 4, 5]
[3, 4, 66]
[3, 12, 25, 48, 79]
2. 接口实现类 ArrayList
java.util.ArrayList 类实现了 List 接口,用于表述长度可变的数组列表。
ArrayList 类的创始长度为 0 ,和 Array 相比, ArrayList 有以下优点:
1, 可以自动更改数组的长度
2, 可以灵活地插入和删掉元素
3, ArrayList 类中的一些方法很方便快捷
缺点是:和其他数组比起来,速度上差了些 …
ArrayList 列表允许取值为 null 。除实现了 List 接口定义的所有功能外,还提供了一些方法来操作列表容器的大小,常用方法如下:
public ArrayList();
public ArrayList(int initialCapacity);
public void ensureCapacity(int minCapacity);
public void trimToSize();
例如: TestArrayList.java
import java.util.Date;
import java.util.ArrayList;
public class TestArrayList{
public static void main(String[] args) {
ArrayList h = new ArrayList();
h.add("1st");
h.add("2nd");
h.add(new Integer(3));
h.add(new Double(4.0));
h.add("2nd"); // 重复元素 , 加入
h.add(new Integer(3)); // 重复元素 , 加入
System.out.println(h);
System.out.println("size=" + h.size());
System.out.println("----- 替换指定元素 -----");
h.set(3,"replace");
System.out.println("-----for 循环遍历 -----");
for(int i=0;i<h.size();i++){
System.out.println(h.get(i));
}
System.out.println("----- 取用特定元素 -----");
Integer it = (Integer)h.get(2);
System.out.println(it.intValue());
System.out.println("----- 插入元素 -----");
h.add(3,new Date());
System.out.println("----- 转换为数组 -----");
Object[] os = h.toArray();
for(Object o : os){
System.out.println(o);
}
}
}
输出结果:
[1st, 2nd, 3, 4.0, 2nd, 3]
size=6
----- 替换指定元素 -----
-----for 循环遍历 -----
1st
2nd
3
replace
2nd
3
----- 取用特定元素 -----
3
----- 插入元素 -----
----- 转换为数组 -----
1st
2nd
3
Sun Dec 27 09:18:34 CST 2009
replace
2nd
3