龙空技术网

你真的了解Java中的集合类么?

小亭聊技术 12

前言:

此刻姐妹们对“java的集合类有哪些”可能比较注重,你们都想要知道一些“java的集合类有哪些”的相关内容。那么小编同时在网上网罗了一些有关“java的集合类有哪些””的相关知识,希望兄弟们能喜欢,各位老铁们一起来学习一下吧!

Java中的集合类很多,有各种List,各种Map,各种Set。那么这么多类,我们怎么来区分它们呢?

我们来看某个集合类是以什么结尾的,如果以List结尾,那说明这个集合类的本质就是一个List,List前面的定义是这个List的实现方式。

比如:ArrayList,说明这是一个List,它的实现方式是数组;LinkedList,说明这是一个List,它的实现方式是链表。

以此类推,对于Map来说,有HashMap和TreeMap。它们的本质都是Map,只不过HashMap是用哈希表这种数据结构来实现的Map(当然冲突处理时也用链表和红黑树了),而TreeMap是用树这种数据结构来实现的Map。

HashMap数据结构,当链表达到一定长度时转成红黑树

对于Set呢?有HashSet,TreeSet和LinkedHashSet。同样,它们的本质都是Set,只不过HashSet是基于HashMap的,也就是说它的底层数据结构也是哈希表;TreeSet是基于TreeMap的,也就是说它的底层数据结构是树;LinkedHashSet是基于HashSet的,也就是说它的底层数据结构是基于哈希表和链表的。

那么,用以实现的底层数据结构不同,能说明什么问题呢?当然,说明它们的功能是不同的。

哈希表的作用是存取速度非常快,但是不能排序。树的作用是存取速度没有哈希表快,但是可以排序。

所以,我们可以分析出:

HashMap:基于哈希表+链表+红黑树实现,不保证顺序,也不能排序。

TreeMap:基于红黑树实现,可以进行排序,排序实现Comparator接口。

HashSet:基于HashMap实现,不保证顺序,也不能排序。

TreeSet:基于TreeMap实现,可以进行排序,排序实现Comparator接口。

LinkedHashSet:基于HashSet实现,不能排序,但是可以保证加入顺序。

对于List,因为常用的只有数组和链表两种方式,比较简单,这里就不说明了。

标签: #java的集合类有哪些