用户名: 密码: 免费注册 忘记密码? 加入收藏 | 设为首页
两种Java容器类List和Set分析
学院首页 | 资讯中心 | 服务器软件 | 系统工具 | 系统软件 | 办公软件 | 聊天软件 | 多 媒 体 | 网页制作 | 网站运营 | 平面设计
艺术欣赏 | 数据库软件 | 程序开发 | 网络组建 | 源码下载 | 驱动下载 | 软件下载 | 电脑安全 | IT创业 | IT博客 | IT社区
硬件数码导航 | 硬件频道 | 本本频道 | MP3频道 | 相机频道 | 手机频道 | 显卡频道 | LCD 频道 | 音箱音频 | 行情 | 评测 | 导购
学院专题 软件 - 系统 - 办公 - 聊天 - 多媒体 - 网页制作 - IT创业 - 运营 - 平面 - 设计欣赏 - 数据库 - 程序 - 服务器 - 组网

 当前位置: 首页>>技术频道>>程序>>JAVA教程>>正文

两种Java容器类List和Set分析

日期:2006-9-15 4:23:57     来源:javajia   编辑:   

容器类可以大大提高编程效率和编程能力,在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()方法 。 gigi_miao

  ▼ 下一篇新闻 JAVA操作数据库方式与设计模式应用
  ▲ 上一篇新闻 java-编写跨平台Java程序注意事项        网友发表观点请进入=>



我要纠错】【进入论坛交流】【关闭此页

文章搜索
   
最新文章

 
·千名爱好者参与首届PHP调查
·腾讯称QQ通讯信息密钥加密 不会被
·雅虎反超Google排名搜索第二
·中搜等十余家IT企业因流氓软件被
·盛大前员工克隆网游装备获暴利被
·凤凰网将向迅雷提供娱乐及宽带内
·信产部出手规范 新浪式企业法律架
·雅虎中国称旗下软件早已没有流氓
·中搜停止划词搜索与流氓软件决裂

广告赞助
相关文章 相关教程下载
焦点信息
·腾讯称QQ通讯信息密钥加密 不会被监听
·信产部出手规范 新浪式企业法律架构不得不改
·盛大前员工克隆网游装备获暴利被追刑责
·凤凰网将向迅雷提供娱乐及宽带内容
·雅虎中国称旗下软件早已没有流氓问题
·雅虎反超Google排名搜索第二
网友评论:(评论内容只代表网友观点,与本站立场无关!)
发表评论     Hard168社区推荐帖子
姓 名: *
* 请网友遵纪守法并注意语言文明。
IT人物推荐

王江民
马云
柳传志



关于本站    联络方式    广告服务    意见信箱    加入收藏   设为首页    -
本站部分内容来自网上,如有侵权部分,敬请告知,我们会在24小时内给予处理
版权所有:Hard168.Com,如需转载文章请与我们取得联系
京ICP备05063857号 Designed by Hard168.Com
两种Java容器类List和Set分析