java集合接口
核心的接口是被封装为不同类型的集合,如下图所示。这些接口允许集合去操作独立的细节和实现。核心的集合接口是java集合框架的基础。正如你在下图看到的,这些核心接口来自于一个层次关系。
核心集合接口层次图Set
是一个特定类型的集合,SortedSet
是一个特定类型的Set。从上图可以看到,有两颗分开的树,[map
][3]不是一个真正的Collection
。
所有的核心集合接口都是通用的,例如,下面是[Collection][1]的接口声明:
public interface Collection<E>...
<E>
语法告诉你这个接口是通用的。当你声明一个集合实例的时候,你应该指定这个集合中包含对象的类型。指定类型的好处是,在编译时,允许编译器去校验你put
到集合的对象是否时正确的,减少了运行时错误。
当你知道如何使用这些接口的时候,你将会明白更多的有关java集合框架的东西。
下面的列表描述了核心的集合接口
- **Collection ** 集合接口层次的最顶层接口。集合表示为一组对象。
Collection
接口是所有集合实现的最小单位。封装了所有集合的最通用性的操作。一些类型的集合允许重复元素,而其他不允许。有些是有序的,有些是无须的。java平台不提供任何该接口的直接实现,而是提供更具体的子接口的实现,比如Set
和List
.具体请看The Collection Interface. - Set 不能包含重复元素的集合,是对数学上的集合进行的抽象。请参考The Set Interface
- **list ** 一个排序的集合。有时被称为序列。可以包含重复的对象,可以通过索引定位到元素。请参考The List Interface
- Queue 用于在处理之前保存多个元素的集合。除了基本的集合操作之外,队列提供额外的插入,提取和检查操作。队列通常但不一定以FIFO(先进先出)方式对元素排序。比如,优先级队列,其根据提供的比较器或元素的自然排序来排序元素。无论使用什么排序,队列的头部都是通过调用remove或poll来删除的元素。在FIFO队列中,所有新元素都插入到队列的尾部。其他类型的队列可以使用不同的布置规则。每个队列实现必须指定其排序属性。另请参阅队列接口部分。请参照The Queue Interface
-
Deque 用于在处理之前保存多个元素的集合。除了基本的收集操作,
Deque
还提供额外的插入,提取和检查操作。Deques
可以用作FIFO(先进先出)和LIFO(后进先出)。在deque
中,所有新元素可以在两端插入,检索和删除。另请参阅Deque接口
部分。请参照The Deque interface -
Map 将键映射到值的对象。
map
中不能包含重复的键;每个键可以映射到至多一个值。如果你已经使用Hashtable
,你已经熟悉了Map的基础知识。另见地图界面部分。请参照The Map Interface
最后两个核心的集合接口是Set
和Map
的排序版本
-
SortedSet
一个有序的Set集合,默认排序为升序。提供了一些操作去利用这个顺序。用于自然排序的集合,例如单词列表和成员资格卷。另请参见SortedSet
接口部分。 -
SortedMap
一个有序的Map集合,默认排序为升序。这是一个类似SortedSet
的map。用于自然排序的键值对组合,比如词典或者是电话薄。想了解有序集合接口维护内部元素顺序的原因,请参考
Object Ordering
Collection
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。一些 Collection允许相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个 Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后 一个构造函数允许用户复制一个Collection。
如何遍历Collection中的每一个元素?不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,使用该迭代子即可逐一访问Collection中每一个元素。典型的用法如下:
Iterator it = collection.iterator(); // 获得一个迭代器
while(it.hasNext()) {
Object obj = it.next(); // 得到下一个元素
}
由Collection接口派生的两个接口是List和Set。
List
-
位置访问 基于他们在列表中的索引下标操作元素。包括
get
set
add
addAll
remove
等方法; -
查找 查找某一个特定的对象将会返回这个对象的下标。 比如
indexOf
和lastIndexOf
; -
迭代 继承了
Iterator
,利用列表的顺序属性; -
range-view 使用
subList
方法可以对某个范围的列表进行操作java平台包括了两个
list
接口的实现,一个是ArrayList
,一般情况下它的性能是最好的,另一个实现是LinkedList
,在某些情况下它的性能是好的。 -
它的一些操作
-
remove
,总是remove第一次出现的某个特定的元素。 -
add
和addAll
,总是在集合的尾部追加这些新的元素。
-
网友评论