说说List,Set,Map三者的区别?三者底层的数据结构?
发表于|更新于|整理归纳
|总字数:364|阅读时长:1分钟|浏览量:
说说 List,Set,Map 三者的区别?三者底层的数据结构?
- List:储存元素是有序的、可重复的。
- Set:储存元素是无序的、不可重复的。
- Map:使用键值对(key-value)储存,key是无序、不可重复的;value是无序、可重复的。
数据结构
List:
- ArrayList:Object[] 数组
- Vector:Object[] 数组
- LinkedList: 双向链表(Jdk1.6之前为循环链表,Jdk1.7取消了循环)
Set:
- HashSet(无序、唯一):基于HashMap实现,底层采用HashMap保存元素
- LinkedHashSet:是HashSet的子类,内部通过LinkedHashMap实现,
- TreeSet(有序、唯一):红黑树(自平衡的排序二叉树)
Map:
- HashMap:Jdk1.8之前由数组+链表组成,数组是HashMap的主题,链表是为了解决哈希冲突而存在的(拉链法解决冲突)。Jdk1.8之后,当链表长度大于阈值(默认8)将链表转化红黑树,以减少搜索时间。
- LinkedHashMap:继承自HashMap,底层仍基于拉链式散列结构即由数组和链表或红黑树组成。另外在基础结构之上增加了一条双向链表,使得上面的结构可以保持键值对的插入顺序。同时通过对链表的相应操作,实现了访问顺序的相关逻辑。
- HashTable:数组+链表组成,数组是HashTable的主体,链表则是为了解决哈希冲突而存在的。
- TreeMap:红黑树(自平衡排序的二叉树)
文章作者: MUMU
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 blog.wo0ow.com!