三种
Set,List,Map。
Set表示不允许容纳重复元素的集合。
List表示可以容纳重复元素的集合。
Map表示存储键/值对的集合,每个键/值对称为一项。
集合接口
Collection:集合框架的顶层接口定义了操作对象集合的共同方法
List:继承Collection,表示有序的,可包括重复元素的列表
Set:继承Collection,表示无序的,无重复元素的集合(数学上的含义)
SortedSet:继承Set,对Set中的元素进行排序
List类一般不能直接使用,可以直接使用的类是ArrayList,LinkedList,Vector,Stack。
ArrayList有如下构造函数:
ArrayList()用于建立一个空的数组列表。
ArrayList(Collection c)建立一个数组列表,该数组列表由集合c中的元素初始化。
ArrayList(int capacity)建立一个数组列表,该数组有指定的初始容量。
样例
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args) {
ArrayList a1=new ArrayList();
System.out.println("List的初始大小:"+a1.size());
a1.add("A");
a1.add("B");
a1.add("C");
a1.add("D");
a1.add("E");
a1.add("F");
a1.add(1,"A2");
System.out.println("增加元素的大小:"+a1.size());
System.out.println("List中的内容:"+a1);
a1.remove("D");
a1.remove(2);
System.out.println("删除元素后的大小:"+a1.size());
System.out.println("内容:"+a1);
}
}
结果
List的初始大小:0
增加元素的大小:7
List中的内容:[A, A2, B, C, D, E, F]
删除元素后的大小:6
内容:[A, A2, C, D, E, F]
!!!难点
从ArrayList获得数组
当使用ArrayList时,有时需要获得一个实际的数组,这个数组包含了列表的内容。可以通过调用方法toArray()来实现它。之所以要将集合类转换为数组,可能的原因如下。
(1)对于一些操作,可以获得更快的处理时间。
(2)为了给方法传递数组,而方法不必重载去接受集合。
(3)为了将新的基于集合的程序与不识别集合的老程序集成。
样例
import java.util.ArrayList;
import java.util.zip.Adler32;
public class ListToArray {
public static void main(String[] args) {
ArrayList a1=new ArrayList();
a1.add(new Double(10.3));
a1.add(new Double(20.4));
a1.add(new Double(30.5));
a1.add(new Double(40.6));
a1.add(new Double(40.7));
System.out.println("内容:"+a1);
Object a[]=a1.toArray();
double sum=0.0;
for(int i=0;i<a.length;i++)
{
sum+=((Double)a[i]).doubleValue();
}
System.out.println("Sum :"+sum);
}
}
结果
内容:[10.3, 20.4, 30.5, 40.6, 40.7]
Sum :142.5
Vector与Stack类
类Vector非常类似于ArrayList,但是Vector是同步的,在多个线程同时访问时,安全性能更好,但这也使得他的性能变差,类Stack继承自Vector,实现一个后进先出的栈。