*******************************************************************************************
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
|