Java集合的区别和选择

Posted corolcorona

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java集合的区别和选择相关的知识,希望对你有一定的参考价值。

 

              Collection

                   |--List       有序,可重复

                            |--ArrayList

                                     底层数据结构是数组,查询快,增删慢。

                                     线程不安全,效率高

                            |--Vector

                                     底层数据结构是数组,查询快,增删慢。

                                     线程安全,效率低

                            |--LinkedList

                                     底层数据结构是链表,查询慢,增删快。

                                     线程不安全,效率高

                   |--Set        无序,唯一

                            |--HashSet

                                     底层数据结构是哈希表。

                                     如何保证元素唯一性的呢?

                                               依赖两个方法:hashCode()和equals()

                                               开发中自动生成这两个方法即可

                                     |--LinkedHashSet

                                               底层数据结构是链表和哈希表

                                               由链表保证元素有序

                                               由哈希表保证元素唯一

                            |--TreeSet

                                     底层数据结构是红黑树。

                                     如何保证元素排序的呢?

                                               自然排序

                                               比较器排序

                                     如何保证元素唯一性的呢?

                                               根据比较的返回值是否是0来决定

 

如何选择

                唯一吗?

                   是:Set

                            排序吗?

                                     是:TreeSet

                                     否:HashSet

                   如果你知道是Set,但是不知道是哪个Set,就用HashSet。                          

                   否:List

                            要安全吗?

                                     是:Vector

                                     否:ArrayList或者LinkedList

                                               查询多:ArrayList

                                               增删多:LinkedList

                   如果你知道是List,但是不知道是哪个List,就用ArrayList。     

         如果你知道是Collection集合,但是不知道使用谁,就用ArrayList。     

         如果你知道用集合,就用ArrayList。

以上是关于Java集合的区别和选择的主要内容,如果未能解决你的问题,请参考以下文章

请问JAVA中啥是集合,和数组比有啥区别呢?谢谢

java集合和数组的区别,举例子

Java集合中List和 Map区别?

java语言中集合与数组的区别是啥?

Java集合中List和 Map区别?

Java五个最常用的集合类之间的区别和联系