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 的区别如下图

 

posted @ 2020-03-11 12:06  potent_prince  阅读(190)  评论(0)    收藏  举报