前言:
此刻姐妹们对“java的集合类有哪些”可能比较注重,你们都想要知道一些“java的集合类有哪些”的相关内容。那么小编同时在网上网罗了一些有关“java的集合类有哪些””的相关知识,希望兄弟们能喜欢,各位老铁们一起来学习一下吧!Java中的集合类很多,有各种List,各种Map,各种Set。那么这么多类,我们怎么来区分它们呢?
我们来看某个集合类是以什么结尾的,如果以List结尾,那说明这个集合类的本质就是一个List,List前面的定义是这个List的实现方式。
比如:ArrayList,说明这是一个List,它的实现方式是数组;LinkedList,说明这是一个List,它的实现方式是链表。
以此类推,对于Map来说,有HashMap和TreeMap。它们的本质都是Map,只不过HashMap是用哈希表这种数据结构来实现的Map(当然冲突处理时也用链表和红黑树了),而TreeMap是用树这种数据结构来实现的Map。
对于Set呢?有HashSet,TreeSet和LinkedHashSet。同样,它们的本质都是Set,只不过HashSet是基于HashMap的,也就是说它的底层数据结构也是哈希表;TreeSet是基于TreeMap的,也就是说它的底层数据结构是树;LinkedHashSet是基于HashSet的,也就是说它的底层数据结构是基于哈希表和链表的。
那么,用以实现的底层数据结构不同,能说明什么问题呢?当然,说明它们的功能是不同的。
哈希表的作用是存取速度非常快,但是不能排序。树的作用是存取速度没有哈希表快,但是可以排序。
所以,我们可以分析出:
HashMap:基于哈希表+链表+红黑树实现,不保证顺序,也不能排序。
TreeMap:基于红黑树实现,可以进行排序,排序实现Comparator接口。
HashSet:基于HashMap实现,不保证顺序,也不能排序。
TreeSet:基于TreeMap实现,可以进行排序,排序实现Comparator接口。
LinkedHashSet:基于HashSet实现,不能排序,但是可以保证加入顺序。
对于List,因为常用的只有数组和链表两种方式,比较简单,这里就不说明了。
标签: #java的集合类有哪些