Java 集合整理

本贴最后更新于 1483 天前,其中的信息可能已经物是人非

JAVA 集合

Collection 接口

List

有序、可重复,可插入 多个null值

  1. ArrayList 容量 10,加载因子 0.5
    有序(下标是连续)、数组
  2. LinkeddList
    双向链表
  3. Vector
    数组、线程安全,效率低

Set

无序、不可重复,只能插入 一个null值

  1. TreeSet
    定义排序规则
    实现 Comparable接口,重写 CompareTo()方法
    自定义类实现 Comparetor接口,重写 Compare()方法
  2. HashSet
    不可重复的标准
    HashCode()、再 equals()
    底层是 HashMap的键,值是统一的 private static final Object PRESENT = new Object();

Map 接口

键值对、无序、不可重复

  1. HashMap 容量:16,加载因子 0.75
    键可以唯一空值、线程不安全
    hash 算法:
    java 所有对象都有个 hashCode值, 通过值来分散下标
    (jdk1.8)底层是: 数组 + 双向链表(红黑树):
    链表的长度 > 8 为红黑树
    链表长度 < 6 就为链表
    底层示意图:
    hashmap.png

  2. ConCurrentHashMap
    线程安全
    分段锁:
    将数据分成一段一段的存储,给每一段数据配置一把锁; 当一个线程占用一段数据时,其他线程还能访问其他段的数据。
    Segment 继承 ReentrantLook 锁,用于存放数组,HashEntry[],默认构造方法,最大并发数 16,无法扩展。
    一个包含 16个锁的数组,每个锁保护所有散列桶的 1/16,第 n个桶,由第 (N mod 16) 个锁来保护。

  3. TreeMap
    键为 TreeSet 同理,可排序

  4. HashTable
    线程安全、键值对不能为空。
    get()/put() 方法上都加了 synchronized锁

`

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3190 引用 • 8214 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...