1。set集合跟collection接口(操作集合元素的方法)行为一样,只是set不可以有重复的元素。不能记住元素的顺序
HashSet具有很好的查找和存取性能。因为有hash表,HashSet是不同步的所有效率比较高,集合的元素值可以是null.
LinkedHashSet 以链表维护插入的顺序,
TreeSet可以确保集合处于排序状态。是SortedSet的实现类
只有当需要一个排序树的时候,才使用TreeSet其他情况下,hashSet都比它好。查找和添加占优。
Set的三个集合都是线程不安全的。可以用Collections工具类 synchronizedSortedSet(new TreeSet(...));
Set和List是Collections接口派生出的子接口。
ArrayList 和vector是List的两个典型实现。
LinkedList的实现方式决定了所有跟下标相关的操作都是线性时间,而在首段或者末尾删除元素只需要常数时间。 为追求效率LinkedList没有实现同步(synchronized),如果需要多个线程并发访问, 可以先采用Collections.synchronizedList()方法对其进行包装。 LinkedHashSet 中普通的插入和删除比HashSet要慢一点。维护链表的开销所造成的
LinkedList的实现方式决定了所有跟下标相关的操作都是线性时间,而在首段或者末尾删除元素只需要常数时间。为追求效率LinkedList没有实现同步(synchronized),如果需要多个线程并发访问,可以先采用Collections.synchronizedList()方法对其进行包装。
HashTable 和hashMap中。hashMap是不同步的,元素值可以是null,但是不能有重复null值的key。hashTable里不能有null值,
Collection c = new ArrayList();
c.add();
1.如果需要遍集合的元素,对于ArrayList,(以数组为底层的),get()比较好
对于LinkedList,用Iterator更好。
总的来说,数组类 ArrayList ,HashMap ,随机访问数据比较快,对于以链表为底层的,插入数据,删除数据比较快。
但是ArrayList的性能总的来说比LinkedList好,插入时要检查是否控件足够,再grow.扩容是原来的1.5倍。LinkedList是链表只需要在后端加链表即可。
