java集合之间的区别
文字表格版:
集合名称 | 接口 | 实现 | 底层数据结构 | 可重复?有序? | 如何保证元素唯一? | 优点 | 缺点 | 线程安全 | |
集合体系 | collection | set | TreeSet(也实现了sortedSet) | 红黑树即二叉树 | 唯一,有序 | 1. 保证元素排序: 自然排序 比较器排序 2.保证元素唯一性: 根据比较的返回值是否是0来决定 |
|||
HashSet | 哈希表 | 唯一,无序 | 依赖两个方法:hashCode()和equals() | ||||||
LinkedHashSet | 链表和哈希表 | 唯一,有序(FIFO即有序的集合(先进先出)) | 1.由链表保证元素有序 2.由哈希表保证元素唯一 |
||||||
list | ArrayList | 数组 | 重复,有序 | 查询快,效率高 | 增删慢 | 不安全 | |||
Vector | 数组 | 重复,有序 | 查询快 | 增删慢,效率低 | 安全 | ||||
LinkedList | 链表 | 重复,有序 | 增删快,效率高 | 查询慢 | 不安全 | ||||
Queue | |||||||||
Map | HashMap | 哈希表(数组+链表+红黑树) | key值唯一,无序 | 支持null,取值速度快 | 不安全 | ||||
HashTable | 哈希表 | 无序 | 不支持null,速度慢 | 安全 | |||||
CurrentHashMap | 哈希表(数组+链表+红黑树) | 安全 | |||||||
TreeMap | 红黑树 | 有序 | 取值速度慢 |