|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。 容器类能够年夜年夜进步编程效力和编程才能,在Java2中,一切的容器都由SUN公司的JoshuaBloch举行了从头计划,丰厚了容器类库的功效。
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()办法。
恰恰证明了java的简单,要不怎么没有通过c/c++来搞个这种框架? |
|