在本文中,我们将重点关注Java中的集合。集合是编程语言的基础部分。从JDK早期开始,Java就引入了Java收集框架。设计JCF的人后来写了一本名为《有效的Java》的书。
Java中的集合主要集中在两部分,一部分在java.util包中,一部分在java.util.concurrent中,后者是在前者的基础上,定义了一些实现同步功能的集合。
本文重点介绍了java.util下的各种集合对象,java中的集合对象大致可以分为三类:List、Set和Map。对应的UML图如下(包括java.util下的大部分集合对象):
收藏概述
Java Collection中的List和Set来自集合,这是学习集合的一个很好的入口,它包含集合中常用的操作:
添加元素:添加/添加全部
空集合:清除
移除元素:移除/移除全部
确定集合是否包含元素:contains/containsAll
确定集合是否为空:空
计算集合中元素的数量:大小
将集合转换为数组:toArray
获取迭代器:迭代器
我们来看一个简单的例子。下面的代码将返回一个集合,集合中的元素是随机生成的整数:
1 private static Collection initCollection()
2 {
3 Collection collection = new ArrayList();
4 Random r = new Random();
5 for (int i = 0 ; i < 5; i++)
6 {
7 collection.add(new Integer(r.nextInt(100)));
8 }
9
10 return collection;
11 }
遍历是操作集合过程中经常使用的操作。我们可以通过两种方式遍历集合:1)用迭代器遍历集合。如上所述,在描述集合接口时,所有的集合都有一个迭代器,我们可以用它来遍历集合。
private static void accessCollectionByIterator(Collection collection)
{
Iterator iterator = collection.iterator();
System.out.println(“The value in the list:”);
while(iterator.hasNext())
{
System.out.println(iterator.next());
}
}
2)使用foreach遍历集合。
private static void accessCollectionByFor(Collection collection)
{
System.out.println(“The value in the list:”);
for(Integer value : collection)
{
System.out.println(value);
}
}
List
Java中的List是数组的有效扩展。如果不使用泛型,该结构可以容纳任何类型的元素。如果使用泛型,它只能容纳泛型指定类型的元素。与阵列相比,列表的容量可以动态扩展。
列表中的元素可以重复,列表中的元素是“有序的”。这里的“有序”不是指排序,而是指我们可以指定一个元素在集合中的位置。
List中常用的集合对象有ArrayList、Vector和LinkedList,其中前两种是基于数组存储的,后一种是基于链表存储的。向量是线程安全的,另外两个不是。
即使使用泛型,也可以在列表中包含null。
数组列表可能是最常用的集合对象。在上面的示例代码中,我们还使用它来实例化一个集合对象,因此我们在这里不再重复。
向量
Vector的例子如下。首先,让我们看看如何生成和输出矢量: