Please enable Javascript to view the contents

Java集合

 ·  ☕ 3 分钟

Collection结构图

Map结构图

总结

推荐视频:Java零基础教程视频(适合Java 0基础,Java初学入门)

ArrayList:底层是数组

LinkedList:底层是双向链表

Vector:底层是数组,线程安全的,效率较低,使用较少

HashSet:底层是 HashMap,放到 HashSet集合中的元素等同于放到HashMap集合 key部分

TreeSet:底层是TreeMap,放到TreeSet.集合中的元素等同于放到TreeMap集合key部分

HashMap:底层是哈希表

HashTable:底层是哈希表,线程安全,效率较低,使用较少

Properties:线程安全的,key和value只能存储字符串

TreeMap:底层是二叉树,它的key可以自动按照大小排序

List集合存储元素的特点:

  • 有序:存进去和取出来的顺序相同,每个元素都有下标
  • 可重复

Set集合存储元素的特点:

  • 无序:存进去和取出来的顺序不相同,Set集合中元素没有有下标
  • 不可重复

SortedSetSortedMap)集合存储元素的特点

  • 无序不可重复
  • SortedSet集合中元素是可排序的
  • 可排序:可以按照大小顺序排列

Map集合的key就是一个Set集合,往Set集合放数据实际上放到了Map集合的key部分。


ArrayList

  1. 默认初始化容量为10
  2. 底层是object数组
  3. 扩容1.5倍
  4. 建议给定一个预估的初始化容量,减少数组的扩容次数
  5. 优点:随机增删元素效率低
  6. 缺点:末尾增删元素效率高

LinkedList

  1. 底层也是有下标的,双向链表
  2. 检索、查询的时候只能从头结点开始
  3. 优点:随机增删元素效率高
  4. 缺点:查询效率低

Vector

  1. 线程安全
  2. 初始化容量为10
  3. 2倍扩容
  4. 底层是数组

HashSet

  1. 底层HashMap
  2. 无序,不可重复
  3. 无序是指没有下标

TreeSet

  1. 底层TreeMap
  2. 无序,不可重复
  3. 元素会自动排序存储
  4. 要实现Comparable<T>compareTo(T o)方法

HashMap

  1. 底层是哈希表

  2. 数组+单向链表

  3. 源码

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    public class HashMap<K,V>{
        //数组
        transient Node<K,V>[] table;
        //链表
        static class Node<K,V> implements Map.Entry<K,V> {
            final int hash;
            final K key;
            V value;
            Node<K,V> next;
        }
    }
    
  4. 同一个链表的hash值相等

  5. 放在HashMap中的元素需要重写equals和hashCode方法

  6. map.put(k,v)

    1. 封装node对象
    2. 调用hashCode()方法获取哈希值
    3. 通过哈希函数转化成数组下标
    4. 下标处没有元素,直接将Node添加到这个位置
    5. 有元素,在链表每个节点进行euquals()比较,如果全为false,在末尾添加,如果有True,更新Value
  7. map.get(k)

    1. 调用hashCode()方法获取哈希值
    2. 通过哈希函数转化成数组下标
    3. 下标处没有元素,返回None
    4. 下标有链表,对链表元素的Key比较equals,有true返回value,全为false,代表没有元素,返回null
  8. 扩容是原来长度的2倍

  9. 允许key值为null


HashTable

  1. key和value都不能为null
  2. 线程安全
  3. 初始化容量11
  4. 扩容2倍+1

Properties

  1. 继承HashTable,线程安全的
  2. key和value只能存储字符串

TreeMap

  1. 放到TreeMap集合中的元素的key部分进行排序有两种实现方式
    1. 实现java.lang.Comparable的compareTo方法
    2. 构造TreeSet或TreeMap集合的时候传一个比较器对象Comparator
  2. 比较规则不会发生改变或者比较规则只有一个的时候使用Comparable
  3. 比较规则多个,并且比较规则需要频繁切换Comparator
分享
您的鼓励是我最大的动力
alipay QR Code
wechat QR Code

Vigilr
作者
Vigilr
大四学生