网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>高级技术>>设计模式>查看文档  
  两种java容器类list和set分析     
  文章作者:未知  文章来源:中国IT实验室  
  查看:47次  录入:管理员--2007-11-20  
  容器类可以大大提高编程效率和编程能力,在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()方法。 
 
 
上一篇: 关于23种设计模式的有趣见解    下一篇: 谨慎使用类变量及正确使用单例模式
  相关文档
generic data access objects 设计模式 11-20
jsf框架中使用的设计模式介绍 11-20
vrml与java在网络课件交互运用 11-20
java设计模式之 decorator(装饰) 11-20
java设计模式之 adapter(纠合不兼容的类) 11-20
java设计模式之Builder(解耦过程和部件) 03-14
爪哇语言结构性模式之变压器模式介绍(上) 03-14
运用java 5 rowset新特性访问db2 11-20
Java模式设计之多态模式与多语言支持 03-14
j2ee中几种业务代理模式的实现和比较 11-20
设计模式之Interpreter(解释器) 03-14
深入浅出基于java的代理设计模式 11-20
爪哇语言工厂方法创立性模式介绍(下) 03-14
java设计模式之command(菜单命令) 11-20
visitor模式概念——visitor模式进一步 11-20
J2EE相关设计模式讨论 03-14
校验值对象——应用visitor模式和反射 11-20
java设计模式之 Proxy(代理) 03-14
java设计模式例子 factorymethod pattern 11-20
设计模式:用java动态代理实现aop 11-20
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
厦门(总部):13616026886 福州:0591-87655121
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息