Java常用的数据结构
一、谈一谈collection 和collections 的区别
collection是集合上级接口,常用的list和set都是它的子接口
collections 是工具类。里面有集合排序,替换和线程安全化,搜索的方法
二、继承collection 接口和Map接口的集合类都是我们常用的数据结构
如下图的子接口+ 实现类


三、常用数据结构之list相关
1、ArrayList
底层实现是数组,顺序存储,不去重,值可以为空
2、LinkedList
底层实现是双向链表 类中包含两个元素一是 当前链表的信息,第二指向下一个节点的信息
顺序存储 不去重 因为是链表的所以遍历搜素要所有元素遍历所以比较慢,但是如果是写操作就效率很高
3、vevtor
不常用
底层也是数组,但是他是线性同步的了sychronized,所以他是线程安全的,所以他的效率很低,一般不用
四、常用数据结构之set相关
1、HashSet
底层实现:数组加链表和HashMap 一样
无序,去重, 可为空
2、LinkedHashSet
他是HashSet 的子类,因为他在构造方法调用的LinkedHashMap所以是有序的
底层实现:
顺序存储,有序,去重, 可为空
3、TreeSet
底层是二叉树,可以对对象元素进行排序
自动排序,有序,去重, 可为空
五、常用数据结构之Map相关
1、HashMap
底层实现是数组加链表(当链表长度超过了8就会变成红黑树(Java1.8))
无序,key,Value 形式 当key值相同时,值自动覆盖,key和value都可以为空
2、ConcurrentHashMap
他是HashMap的子类所以底层如上
因为HashMap是线程不安全的,所以多线程会出现数据错误,为了保证线程安全且高效,所以有了ConcurrentHashMap,他是使用的精妙的分段锁实现的线程安全的
3、LinkedHashMap
底层实现是数组加双向链表
有序(链接列表定义了迭代顺序,该迭代顺序可以是插入顺序或者是访问顺序),key和value都可以为空,值覆盖
4、TreeMap
底层实现是红黑树
有序(自动排序),key和value都可以为空,值覆盖
六 、常用数据结构之HashTable相关
和HashMap一样,Hashtable 也是一个散列表,它存储的内容是键值对(key-value)映射。
Hashtable 继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口。
他是线程安全的因为加锁了synchronized,但是效率很低
他和HashMap 的区别如下图


浙公网安备 33010602011771号