首页 > 代码库 > Java集合的区别和选择

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集合的区别和选择