栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

浅析java容器类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

浅析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 引入了分段锁。

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1016537.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号