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