List接口下的集合
2013-12-22 18:50
246 查看
结构
ArrayList 继承了 抽象的List 实现了List接口
抽象的List继承了抽象的Collection实现了List接口
抽象的Collection实现了Collection接口
Collection接口继承了Iterable接口,iterator迭代器就这么来的。
Vector也是这样的结构。
LinkedList 继承了 抽象的连贯的List 实现了List接口
抽象的连贯的List继承了抽象的List
抽象的List继承了抽象的Collection实现了List接口
抽象的Collection实现了Collection接口
Collection接口继承了Iterable接口,iterator迭代器就这么来的。
性能
Vector和ArrayList
Vector在java1.0的时候存在,ArrayList在java1.2的时候存在,就性能上来说,ArrayList在遍历,对集合元素的重新赋值,在集合最后插入元素方面都要高于Vector,在集合中随机插入元素的速度不相上下,也就是get(),set(int index,E e),add()方法要比Vector速度更快。但是ArrayList是线程不安全的,而Vector是线程安全的。就容量来说,Vector可以指明容量和容量的增长量。ArrayList用迭代器也稍比Vector快。如果数据都一致,速度就更快。
Vector和LinkedList
Vector的在遍历和重新给元素赋值以及在集合的最后添加元素方面速度都要高于LinkedList,但是在集合中随机插入元素速度要慢很多,慢到LinkedList插入了几遍,Vector还没插完。LinkedList的迭代器也比Vector的快。我的电脑在100万数据的情况下快了将近20毫秒。
ArrayList和LinkedList
ArrayList的随机插入和Vector差不多,也是LinkedList插完N遍了它还没插完的那种,Vector在遍历,集合的最后插入元素和给元素重新赋值都要快于LinkedList,那么ArrayList就不要谈了。迭代器的速度再数据都相同的情况下,ArrayList比LInkedList快一点,我的电脑在100万的数据下差了4毫秒,数据不同的时候差了20毫秒左右。LinkedList的迭代器是跟数据有关的,如果数据一致,迭代的速度就很快,如果不一致,就只能比Vector要快一点点了。而ArrayList和Vector的迭代器和数据是无关的。
扩展
如何把ArrayList,LinkedList变为线程安全的?
Collections.synchronizedList(List<T>); return List<T>
Collections是一个集合的工具类,可以获得线程安全的List,无序Map,有序Map,无序Set,有序Set。
也可以将List进行排序(sort method)。
相关文章推荐
- Collection集合之六大接口(Collection、Set、List、Map、Iterator
- 使用Comparable、Comparator接口实现对对象数组、List集合自定义排序
- Java精选笔记_集合【List(列表)接口】
- (020)java后台开发之JAVA集合中的List接口
- 集合接口(List,Set,Map)List(序列)排序--5,6
- Java 集合深入理解(4):List<E> 接口
- Java集合之LinkedList(实现List接口)
- Java集合之list接口与set接口
- JAVA 常用集合接口List、Set、Map总结
- Java复习之集合框架List接口
- java 集合 list 接口 集合的迭代 超级for循环 扩容 链表 map Hash
- Java 集合深入理解(4):List<E> 接口
- 黑马程序员——集合中List接口
- Collection集合,Map两种接口;Vector,LinkedList,ArrayList区别;
- java学习日记_77:集合框架之List接口
- 13. Java类集 Part 1(类集、Collection接口、List接口、Set接口、SortedSet接口、集合的输出) ----- 学习笔记
- Collection集合之六大接口(Collection、Set、List、Map、Iterator和Comparable)
- 集合:接口List
- SpringMVC的接口,接收json数据返回json数据并且解析为List对象集合
- Java单例集合下List接口的常用实现类