java中的最重要的 集合框架

Java集合框架详解:接口、类及映射
本文深入解析Java集合框架中的接口、类和映射,包括Collection、List、Set、SortedSet、Queue等集合接口以及ArrayList、LinkedList、HashSet、TreeSet等集合类。同时介绍了映射(Map)及其相关接口和类,如Map、Map.Entry、HashMap、TreeMap等。文章详细讲解了迭代器、映射项和多种集合操作方法。

 

java.util这个重要的包包含大量的类和接口,支持很多的功能。例如,java.util具有能产生伪随机数的类,还包括可以管理日期和时间、观察事件、操作位集合、标记字符串、处理格式化数据等的类。java.util包也包含了Java中功能最强大的子系统之一:集合框架(collections Framework). 以下将分析集合框架中的接口和类。

 

集合接口:

  

Collection允许处理一组对象,它位于集合层次结构的项部
Deque扩展Queue接口,以处理双端队列
List扩展Collection接口,以处理序列(列表中的可以包含重复的元素)
NavigableSet扩展SortedSet接口,以处理基于最接近匹配搜索的元素的取回
Queue扩展Collection接口,以处理列表中的特殊类型,其中的元素只能从前面删除
Set扩展Collection接口,以处理集合,其中的元素必须唯一
SortedSet扩展Set接口,以处理排序的集合

除了集合接口外,集合中还使用了Comparator, RandomAccess, Iterator 和 ListIterator 接口。简而言之,Comparator接口定义如何比较两个对象,Iterator和ListIterator接口例举集合中的对象。

Queue接口中有几个方法值得注意:poll()和remove()这两个方法都是删除一个元素,它们的区别在于,如果队列为空,则poll()返回null,而remove()会抛出一个异常,另外存在获得但不删除队列顶部元素的两种方法:element()和peek()。它们的区别在于,如果队列为空,则element()抛出一个异常,而peek()返回null。

 

集合类:

AbstractCollection实现大部分Collection接口
AbstractList扩展AbstractCollection, 实现大部分List接口
AbstractQueue扩展AbstractCollection, 实现部分Queue接口
AbstractSequentialList 扩展AbstractList, 用于顺序而不是随机访问集合的元素
LinkedList通过扩展 AbstractSequentialList 实现链表
ArrayList通过扩展 AbstractList实现动态数组
ArrayDeque通过扩展AbstractCollection和实现Deque接口,实现动态双端队列
AbstractSet扩展AbstractCollection, 实现大部分Set接口
EnumSet扩展AbstractSet, 用于enum元素
HashSet扩展AbstractSet, 用于哈希表
LinkedHashSet扩展HashSet, 允许按照插入的顺序来迭代
PriorityQueue扩展AbstractQueue, 支持基于优先级的队列
TreeSet在树中实现组,扩展AbstractSet

 ArrayList 类扩展了AbstractList接口,并实现了List接口,ArrayList是一个泛型类,它的声明如下:

                   class ArrayList<E> 其中,E 指定将保存列表的对象的类型。

LinkedList类扩展了AbstractSequentialList,并实现List,Deque和Queue接口。它提供一个链表型的数据结构,LinkedList是一个泛型类,它的声明如下:class LinkedList<E>,其中,E指定将保存列表的对象的类型。

 

HashSet类扩展了AbstractSet,并且实现了Set接口,它创建一个使用哈希表来存储元素的集合。HashSet是一个泛型,它的声明如下: class HashSet<E>其中,E指定组将保存的对象类型。

 

LinkedHashSet类扩展了HashSet,但是没有添加自己的成员。LinkedHashSet是一个泛型类,它的声明如下:class LinkedHashSet<E>。LinkedHashSet 以元素插入的顺序来维护组中项的链表。它允许以插入的顺序在组中迭代。也就是说,当使用迭代器在LinkedHashSet中循环时,元素将以插入的顺序返回。

 

TreeSet类扩展了AbstractSet,并且实现了NavigableSet接口。它创建一个使用树结构来存储元素的集合,对象以升序顺序存储,访问和取回的时间很快。这使得TreeSet是存储大量有序信息的很好选择,以便能很快找到。

 

通过迭代器访问集合。通常,有许多情况需要遍历集合中的元素,例如显示集合中的每一个元素,一种遍历方法是使用迭代器,它是实现Iterator或者ListIterator接口的对象,使用迭代器能够在集合中遍历,以获取或者删除元素。在使用迭代器访问集合之前,必须先能够获得一个迭代器。每个集合类都提供iterator()方法来返回一个迭代器,它指向集合的开始处,通过使用这个迭代器对象,可以按一个接一个的方式访问集合中的每一个元素。一般地来说,使用迭代器遍历集合的内容时应遵循下面的步骤:

        1、通过集合的iterate()方法获得一个指向集合开始处的迭代器;

        2、设置一个调用 hasNext() 方法的循环。只要 hasNext()返回true,就进行循环迭代;

        3、在循环中,调用next()方法获得每个元素。

 

映射(Map)是存储键和值之间联系或者键/值对的对象,给定一个键,可以找到它对应的值。

映射接口

Map映射唯一键到值
Map.Entry描述映射中的元素(一个键/值对)。它是Map的内部类
NavigableMap扩展SortedMap,以处理基于最接近匹配搜索的键/值对的取回
SortedMap扩展Map,将键以升序保存

 

Map.Entry接口,能够使用映射项(即映射的一个键/值对)。注意,Map接口声明的entrySet()方法返回的是包含所有映射键/值对的组,每个元组元素就是一个Map.Entry对象。Map.Entry是一个泛型接口。

 

映射类:

AbstractMap实现大部分Map接口
EnumMap扩展AbstractMap,用于enum键
HashMap 扩展AbstractMap,用于哈希表
TreeMap扩展AbstractMap,用于树结构
WeakHashMap扩展AbstractMap,用于弱键的哈希表
LinkedHashMap扩展HashMap,允许按照插入的顺序来迭代
IdentityHashMap扩展AbstractMap,并在比较文档时使用等价的引用

转载于:https://www.cnblogs.com/hoojjack/p/4759583.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值