Java--集合--知识总结

  1. Collection
    • List
      • ArrayList
        • 底层  
      • Vector
      • LinkedList  
    • Set  
      • HashSet
      • LinkedHashSet
      • TreeSet  
  2. Map
    • HashMap
      • LinkedHashMap
    • TreeMap
    • HashTable
      • Properties 
  3. package com.model.work;
    
    import java.util.*;
    
    /**
     * @Description:测试类
     * @Author: 张紫韩
     * @Crete 2021/6/16 18:08
     */
    public class TestDemo07 {
        public static void main(String[] args) {
    
            ArrayList<Object> arrayList = new ArrayList<>();
            arrayList.add("a");
            Vector<Object> vector = new Vector<>();
            vector.add("a");
    
            LinkedList<Object> linkedList = new LinkedList<>();
            linkedList.add("a");
            linkedList.add("b");
            HashSet<Object> hashSet = new HashSet<>();
            hashSet.add("a");
            hashSet.add("a");
    
            LinkedHashSet<Object> linkedHashSet = new LinkedHashSet<>();
            linkedHashSet.add("a");
            linkedHashSet.add("a");
            TreeSet<Object> treeSet = new TreeSet<>();
            treeSet.add("a");
            treeSet.add("b");
    
            HashMap<Object, Object> hashMap = new HashMap<>();
            hashMap.put("a", "a");
            hashMap.put("b", "b");
            TreeMap<Object, Object> treeMap = new TreeMap<>();
            treeMap.put("a", "a");
    
            Hashtable<Object, Object> hashtable = new Hashtable<>();
            hashtable.put("a", "a");
    
            Properties properties = new Properties();
            properties.put("a", "a");
        }
        /**
         * 集合:
         *     1.Collection
         *             1.List
         *                 * ArrayList
         *                      底层:Object[]类型的数组,构造函数创建一个空数组,第一次加入数据时进行初始化大小为10,按1.5扩容
         *                      可以添加重复的元素,包括null  
         *                 * Vector
         *                      底层:Object[]类型的数组,构造函数直接创建一个10个空间的数组,当数组满了时,扩容是扩展为原来的2倍
         *                      可以添加重复的元素,包括null
         *                 * LinkedList
         *                      底层:双向链表,是由LinkedList$Node节点构成,初始值0一个一个节点的往上加:节点包括
         *                          E item; 值
         *                          Node<E> next; 指向下一个节点
         *                          Node<E> prev; 指向上一个节点
         *                      可以添加重复的元素,包括null  
         *             2.Set  
         *                 * HashSet
         *                      底层:底层时HashMap:数组+链表+红黑树 ,构造函数初始化加载因子,第一次添加是扩容到16,当超过临界值时扩容到原来的2倍
         *                      不允许重复的元素添加,节点时HashMap$Node节点类型
         *
         *                      * LinkedHashSet
         *                          底层是 数组加+双向链表,构造函数直接创建一个长度为16的数组,底层时LinkedHashMap$Entry类型的节点:
         *                          包括 :before,after,key,value,next
         *                          不允许有重复的元素,插入和取出的顺序一致
         *
         *                 * TreeSet 
         *                      底层是:红黑树 初始大小为o ,节点时TreeMap$Entry类型的包括:
         *                          static final class Entry<K,V> implements Map.Entry<K,V> {
         *                                        K key;
         *                                        V value;
         *                                        Entry<K,V> left;
         *                                        Entry<K,V> right;
         *                                        Entry<K,V> parent;
         *                                        boolean color = BLACK;
         *
         *      2.Map
         *             1.HashMap:
         *                  底层是数组链表红黑树,构造函数初始化加载因子,添加第一个元素是扩容为16,按1.5倍扩容,节点类型HashMap$Node类型:
         *                    Node(int hash, K key, V value, Node<K,V> next) {
         *                           this.hash = hash;
         *                           this.key = key;
         *                           this.value = value;
         *                           this.next = next;
         *                       }
         *                 * LinkedHashMap:
         *                      底层是数组+双向链表LinkedHashMap$Entry类型的接节点:
         *                        static class Entry<K,V> extends HashMap.Node<K,V> {
         *                              Entry<K,V> before, after;
         *                              Entry(int hash, K key, V value, Node<K,V> next) {
         *                              super(hash, key, value, next);
         *                              }
         *                        }
         *
         *             2.TreeMap:
         *                  底层是红黑树,节点类型TreeMap$Entry:
         *                   static final class Entry<K,V> implements Map.Entry<K,V> {
         *                           K key;
         *                           V value;
         *                           Entry<K,V> left;
         *                           Entry<K,V> right;
         *                           Entry<K,V> parent;
         *                           boolean color = BLACK;
         *             3.HashTable:
         *                  底层数据结构:数组链表红黑树,初始大小为11按 2倍加1扩容,线程安全,节点类型是HashTale$Entry;
         *                   private static class Entry<K,V> implements Map.Entry<K,V> {
         *                   final int hash;
         *                   final K key;
         *                   V value;
         *                   Entry<K,V> next;
         *
         *                 * Properties :底层是HashTable
         *
         *
         *
         *
         * */
    }

     

posted @ 2021-06-16 20:55  张紫韩  阅读(32)  评论(0编辑  收藏  举报