java集合和接口,java集合框架 接口篇

java集合接口

核心的接口是被封装为不同类型的集合,如下图所示。这些接口允许集合去操作独立的细节和实现。核心的集合接口是java集合框架的基础。正如你在下图看到的,这些核心接口来自于一个层次关系。

7a5ed10e7a4f3194580b9f165722a7c6.gif

核心集合接口层次图

Set是一个特定类型的集合,SortedSet是一个特定类型的Set。从上图可以看到,有两颗分开的树,[map][3]不是一个真正的Collection。

所有的核心集合接口都是通用的,例如,下面是[Collection][1]的接口声明:

public interface Collection...

语法告诉你这个接口是通用的。当你声明一个集合实例的时候,你应该指定这个集合中包含对象的类型。指定类型的好处是,在编译时,允许编译器去校验你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允许相同的元素而另一些不行。一些能排序而另一些不行。JavaSDK不提供直接继承自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,总是在集合的尾部追加这些新的元素。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值