J2SE综合:两种Java容器类List和Set解析[Java编程]
本文“J2SE综合:两种Java容器类List和Set解析[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
容器类可以大大提高编程效率和编程本领,在Java2中,全部的容器都由SUN公司的Joshua Bloch举行了重新计划,丰富了容器类库的功效.
Java2容器类类库的用处是“保存对象”,它分为两类:
Collection----一组独立的元素,普通这些元素都固守某种法则.List必须保持元素特定的次序,而Set不能有反复元素.
Map----一构成对的“键值对”对象,即其元素是成对的对象,最典型的利用就是数据字典,并且还有别的遍及的利用.别的,Map可以返回其全部键构成的Set和其全部值构成的Collection,或其键值对构成的Set,并且还可以像数组一样扩大多维Map,只要让Map中键值对的每个“值”是一个Map便可.
1.迭代器
迭代器是一种计划情势,它是一个对象,它可以遍历并挑选序列中的对象,而开辟人员不需求理解该序列的底层构造.迭代器普通被称为“轻量级”对象,因为成立它的代价小.
Java中的Iterator功效对比简单,并且只能单向移动:
(1) 利用办法iterator()要求容器返回一个Iterator.第一次调用Iterator的next()办法时,它返回序列的第一个元素.
(2) 利用next()得到序列中的下一个元素.
(3) 利用hasNext()查抄序列中能否还有元素.
(4) 利用remove()将迭代器新返回的元素删除.
Iterator是Java迭代器最简单的实现,为List计划的ListIterator具有更多的功效,它可以从两个方向遍历List,也可以从List中插入和删除元素.
2.List的功效办法
List(interface): 次序是List最重要的特点;它确保保护元素特定的次序.List为Collection增添了很多办法,使得可以向List中间插入与移除元素(只举荐LinkedList利用).一个List可以生成ListIterator,利用它可以从两个方向遍历List,也可以从List中间插入和删除元素.
ArrayList: 由数组实现的List.它答应对元素举行快速随机拜候,但是向List中间插入与移除元素的速度很慢.ListIterator只应当用来因后向前遍历ArrayList,而不是用来插入和删除元素,因为这比LinkedList开销要大很多.
LinkedList: 对次序拜候举行了优化,向List中间插入与删除得开销不大,随机拜候则相对较慢(可用ArrayList替换).它具有办法addFirst()、addLast()、getFirst()、getLast()、removeFirst()、removeLast(),这些办法(没有在任何接口或基类中定义过)使得LinkedList可以当作仓库、行列和双向行列利用.
3.Set的功效办法
Set(interface): 存入Set的每个元素必须是唯一的,因为Set不保存反复元素.加入Set的Object必须定义equals()办法以确保对象的唯一性.Set与Collection有完好一样的接口.Set接口不保证保护元素的次序.
HashSet: 为快速查找而计划的Set.存入HashSet的对象必须定义hashCode().
TreeSet: 保持次序的Set,底层为树构造.利用它可以从Set中提取有序的序列.
LinkedHashSet: 具有HashSet的查询速度,且内部利用链表保护元素的次序(插入的次序).于是在利用迭代器遍历Set时,后果会按元素插入的次序显示.
HashSet采取散列函数对元素举行排序,这是专门为快速查询而计划的;TreeSet采取红黑树的数据构造举行排序元素;LinkedHashSet内部利用散列以加快查询速度,同时利用链表保护元素的次序,使得看起来元素是以插入的次序保存的.需求注意的是,生成自己的类时,Set需求保护元素的存储次序,因此要实现Comparable接口并定义compareTo()办法.
以上是“J2SE综合:两种Java容器类List和Set解析[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |