浅析java容器类

java容器主要包括Collection和Map两种
在这里插入图片描述
Collection接口下有三个接口:
1.Set接口
2.List接口
3.Queue接口
set接口定义的是元素不可重复的容器
List接口定义的是数据按线性管理的元素有序的容器
Queue接口定义的是先进先出的队列容器

Set接口下有
1.SortedSet接口(SortedSet接口实现类有TreeSet),
2.HashSet类
3.LinkedHashSet类

TreeSet通过TreeMap实现的,底层数据结构是红黑树,添加元素到集合时按照比较规则将其插入到合适的位置,保证插入后的集合仍然有序。查询O(logN),支持有序操作
HashSet通过HashMap实现的,HashMap的key就是HashSet存储的元素,Value系统自定义一个名为PRESENT的Object类型常量。判断元素时候相同时,先比较hashCode,相同再利用equals比较,查询效率O(1)。不支持有序性操作。
LinkedHashSet继承自HashSet,通过LinkedHashMap实现,使用双向链表维护元素插入顺序。

List接口下有
1.ArrayList类
2.LinkedList类
3.vector类

ArrayList使用数组实现,是容量可变的非线程安全列表,随机访问快,集合扩容是会创建更大的数组,把原有数组复制到新数组。
LinkedList本质是双向链表,与ArrayList相比插入和删除速度更快,但是随机访问元素很慢。
Vector和ArrayList 类似,但方法都是synchronized修饰,线程安全的,ArrayList和LinkedList两个类都是非线程安全的。

Queue接口下有:
1.LinkedList类
2.PriorityQueue类

LinkedList:可以用它来实现双向队列。
PriorityQueue:基于堆结构实现,可以用它来实现优先队列。

在这里插入图片描述

Map接口下有:
1.SortedMap接口(实现类有TreeMap)
2.HashMap
3.LinkedHashMap
4.HashTable

TreeMap:基于红黑树实现。红黑树是一颗自平衡的排序二叉树。红黑树特性:
1.每个节点只能是红色或黑色
2.根节点是黑色
3.每个叶子节点是黑色,
4.如果一个节点是红的,那它的两个子节点都是黑的,也就是统一路径上不能出现相邻的红色节点
5.从任意节点到其他每个叶子结点的所有路径都包含相同数目的黑色节点。
在这里插入图片描述

HashMap:基于哈希表实现。具体存储结构为一个Entry<>类型的数组,数组的每个位置被看成是一个桶,桶里放着hash值相同的存储元素,以链表存储起来。
在这里插入图片描述

LinkedHashMap:使用双向链表来维护元素的顺序,顺序为插入顺序或者最近最少使用(LRU)顺序。
HashTable:和 HashMap 类似,但它是线程安全的,但它是遗留类,不应该去使用,而是使用 ConcurrentHashMap 来支持线程安全,ConcurrentHashMap 的效率会更高,因为 ConcurrentHashMap 引入了分段锁。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值