java集合的一些知识点

    xiaoxiao2021-03-30  35

    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是链表只需要在后端加链表即可。

    转载请注明原文地址: https://ju.6miu.com/read-665140.html

    最新回复(0)