A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 曹思敏 中级黑马   /  2013-6-7 23:03  /  1381 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java问题:集合 HashSet,LinkedHashSet,TreeSet,ArrayLIst,LinkList,Vector这些集合在平时经常出现,该如何应用??

评分

参与人数 1黑马币 +2 收起 理由
刘凯 + 2 问题问的具体点,

查看全部评分

2 个回复

倒序浏览
*******************************************************************************************
java问题:集合 HashSet,LinkedHashSet,TreeSet,ArrayLIst,LinkList,Vector这些集合在平时经常出现,该如何应用??
*******************************************************************************************
(1)如果不要求重复  不要求排序  那就啥都别想 List就可以了
              对于ArrayList和LinkedList 毕老师这么总结的“
             ArrayList的底层是数组,数组就是查询效率高,但是插入和删除在大数据的时候效率低  所以 项目设计大数据  插入删除操作少 查询操作多  ArrayList
             反之  就是LinkedList  但是 毕老师说 据他的经验  查询操作时非常多的  所以  一般不清楚的时候 没有特殊要求  就是用ArrayList
(2)一旦要求元素不唯一的时候,就要使用Set集合
            不要求排序  使用HashSet就行  但是 这个时候集合中存储的成员所属的类必须重写equals和hashCode方法 以确保在集合中唯一性
            要求排序  那就使用TreeSet 但是 要求集合中的元素必须具有可比性  这就要求元素所属的类必须实现了Comparable接口  定制了元素之间的比较规则
(3)Vector是JDK1.0产生的  先于集合框架  线程同步 基本很少用 我现在了解用到地方就是毕老师讲的合并流(序列流 SequenceInputStream)使用到了  Vector   这是因为你要把多个独立的字节输入流 串行地合成一个大流  就必须把这个些流都传到SequenceInputStream的构造方法中  那么多个流必须存储到集合里面  再传给SequenceInputStream的构造方法里面  但是 sequenceInputStream的构造方法有一个是 接受Enumeration<? extends InputStream>这个参数的  Enumeration是Iterator的前身   由Vector的实例通过elements()方法获取   所以 这个时候 不得不用Vector产生Enumeration迭代器  来构建SequenceInputStream

评分

参与人数 1技术分 +1 收起 理由
刘凯 + 1 赞一个!

查看全部评分

回复 使用道具 举报
看楼上回答的这么详细,也就忍不住来学习一下啦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马