两种特殊的Java容器类List和Set分析

两种特殊的Java容器类List和Set分析,第1张

两种特殊的Java容器类List和Set分析,第2张

类可以大大提高编程效率和编程能力。在Java2中,所有容器都由SUN公司的Joshua Bloch重新设计,丰富了容器类库的功能。

Java2容器类类库的目的是“保存对象”,它可以分为两类:

集合——一组独立的元素,通常所有的元素都遵守一些规则。列表必须保持元素的特定顺序,而集合不能有重复的元素。

Map是一对“键值对”对象,即它的元素是成对的对象。最典型的应用是数据字典,还有其他广泛的应用。另外,Map可以返回一个由它的所有键组成的集合和一个由它的所有值组成的集合,或者一个由键-值对组成的集合,也可以像数组一样扩展多维Map,只要Map中的每个键-值对的“值”都是Map。

1.迭代程序

迭代器是一种设计模式,它是一个对象,可以在一个序列中遍历和选择对象,开发者不需要知道序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它们的成本更低。

Java中的迭代器函数很简单,只能单向移动:

(1)使用方法Iterator()要求容器返回一个迭代器。第一次调用迭代器的next()方法时,它返回序列的第一个元素。

(2)使用next()获取序列中的下一个元素。

(3)使用hasNext()检查序列中是否有元素。

(4)使用remove()删除迭代器新返回的元素。

迭代器是Java迭代器最简单的实现。为List设计的ListIterator有更多的功能。它可以从两个方向遍历列表,还可以在列表中插入和删除元素。

2.2的函数法。目录

列表(界面):顺序是列表最重要的特征;它确保维护元素的特定顺序。Listcollection中添加了许多方法,使您能够在列表中间插入和移除元素(仅推荐LinkedList)。一个列表可以生成一个ListIterator,可以用来从两个方向遍历列表,从列表中间插入和删除元素。

ArrayList:由数组实现的列表。它允许快速随机访问元素,但是在列表中间插入和删除元素的速度很慢。ListIterator应该只用于从后向前遍历ArrayList,而不是插入和删除元素,因为这样比LinkedList开销大得多。

LinkedList:顺序访问优化,对列表的插入和删除开销较小,而随机访问相对较慢(可以用ArrayList代替)。它有方法addFirst()、addLast()、getFirst()、getLast()、removeFirst()、removefirst()。这些方法(尚未在任何接口或基类中定义)使得LinkedList可以用作堆栈、队列和双向队列。

3.3的函数法。一组

Set(interface):集合中存储的每个元素都必须是yes,因为集合不包含重复的元素。集合中添加的对象必须定义equals()方法,以保证对象的性别。具有与集合完全相同的接口。设置接口不保证维护元素的顺序。

HashSet:为快速搜索而设计的集合。存储在HashSet中的对象必须定义hashCode()。

TreeSet:保持顺序的集合,底层是树形结构。它可用于从集合中提取有序序列。

LinkedHashSet:具有HashSet的查询速度,内部使用链表维护元素的顺序(插入顺序)。所以当迭代器用于遍历集合时,结果将按照元素插入的顺序显示。

HashSet使用哈希函数对元素进行排序,专门用于快速查询;ESET使用红黑树的数据结构对元素进行排序;LinkedHash由LinkedHashSet内部使用,用于加快查询速度,而链表则用于维护元素的顺序,这样就显得元素是按照插入的顺序保存的。需要注意的是,Set在生成自己的类时,需要维护元素的存储顺序,所以需要实现compare接口,定义compareTo()方法。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 两种特殊的Java容器类List和Set分析

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情