专业的JAVA编程教程与资源

网站首页 > java教程 正文

你真的了解Java中的集合类么?(java集合类详解和使用)

temp10 2024-11-17 01:58:16 java教程 9 ℃ 0 评论

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

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

你真的了解Java中的集合类么?(java集合类详解和使用)

比如: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,因为常用的只有数组和链表两种方式,比较简单,这里就不说明了。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表