三大容器类的实现类的特点

 Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。

Java内部的容器类主要分为两类:Collection(集合)与Map(映射)

 set
  HashSet
 基于哈希表实现,底层使用HashMap来保存所有元素。
 不能保证迭代顺序。
 允许使用null元素。
  LinkedHashSet
 LinkedHashSet底层使用LinkedHashMap来保存所有元素,它继承于HashSet。
 内部使用双向链表维护插入顺序。
  TreeSet
 基于(TreeMap)红黑树实现 TreeSet非同步,线程不安全。
 TreeSet中的元素支持2种排序方式:自然排序 或者 根据创建TreeSet 时提供的 Comparator 进行排序。
 List
  ArrayList
 实现 List 接口、底层使用数组保存所有元素。
 相当于动态数组,支持动态扩容。
 不同步。
   Vector
 Vector可以实现可增长的对象数组。
 Vector 实现 List 接口,继承 AbstractList 类,同时还实现 RandmoAccess 接口,Cloneable 接口。
 Vector 是线程安全的 LinkedList LinkedList。
  LinkedList
 是基于链表实现的。
 所以它的插入和删除操作比 ArrayList更加高效。但也是由于其为基于链表的,所以随机访问的效率要比 ArrayList 差。
 Queue
  LinkedList
 可以用于实现双向队列。
Map
 HashMap
HashMap根据键的HashCode来实现,访问速度较快,遍历顺序并不确定。
HashMap最多只允许一条记录的键为null,允许多条记录的值为null。
HashMap线程不安全。
确保线程安全,可以用Collections的synchronizedMap方法使HashMap具有线程安全的能力,或者使用ConcurrentHashMap。
HashTable
HashTable是遗留类,多数功能与HashMap类似,继承自Dictionary类。
HashTable是线程安全的。也就是说任意时刻只有一个线程能够写HashTable。
HashTable的并发性不如ConcurrentHashMap,因为ConcurrentHashMap引入了分段锁。
  LinkedHashMap
基于哈希表和链表实现,借助双向链表确保迭代顺序是插入的顺序。
 TreeMap
基于红黑树实现 。
默认按照键值得升序进行排序。
在使用TreeMap时,key必须实现Comparable接口或者在构造TreeMap传入自定义的Comparator,
否则会在运行时抛出java.lang.ClassCastException类型的异常。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值