集合的详细解析和使用

Java中的集合是很重要的知识点,下面就详细的整理出各种集合的特性和常见用法;

首先介绍下Collection单列集合和Map集合的集成体系:

Collection单列集合的集成体系

Map双列集合的集成体系

下面就详细的去了解这些集合的用法

集合可以分为单例集合和双列集合

单列集合:Collection

List(有序,可重复)

 ArrayList:底层数据结构是数组,查询快,增删慢, 线程不安全,效率高
 LinkedList:底层数据结构是链表,查询慢,增删快, 线程不安全,效率高
 Vector: 底层数据结构是数组,查询快,增删慢, 线程安全,效率低


Set(无序,不可重复)                
HashSet:                    

1:底层数据结构是哈希表; 2:哈希表依赖两个方法hashCode(),equals();3:执行顺序: 首先判断hashCode()值是否相等,如果相等就执行equals()方法看其返回值是什么,如果为true说明元素重复,不添加到集合中,如果为false直接添加到集合中;如果hashCode()值不相等直接添加到集合中 。
LinkedHashSet:                          
1:底层数据结构由哈希表和链表组成 ;   2:链表保证了元素的有序 ;3:哈希表保证了元素唯一                   
TreeSet:                      
1.底层数据结构是红黑树;2.保证元素的唯一是根据比较的返回值是否为0来判断的;3.两种排序方式:自然排序:让元素所属的类实现comparable接口;选择器排序:让集合接收一个comparator的实现类对象                                   
                    
                            
                        

双列集合:Map                            
                          
HashMap                        
1:底层数据结构是哈希表    线程不安全,效率高;   2:哈希表依赖两个方法hashCode(),equals(); 3:执行顺序: 首先判断hashCode()值是否相等,如果相等就执行equals()方法看其返回值是什么,如果为true说明元素重复,不添加到集合中,如果为false直接添加到集合中;如果hashCode()值不相等直接添加到集合中 。             
                      
 
LinkedHashMap                    
1:底层数据结构由哈希表和链表组成 ;   2:链表保证了元素的有序 ;3:哈希表保证了元素唯一 。                           
                                                         

TreeMap         
 1.底层数据结构是红黑树;2.保证元素的唯一是根据比较的返回值是否为0来判断的;3.两种排序方式:自然排序:让元素所属的类实现comparable接口;选择器排序:让集合接收一个comparator的实现类对象。  

 HashTable

 1:底层数据结构是哈希表    线程安全,效率低 ;2:哈希表依赖两个方法hashCode(),equals(); 3:执行顺序: 首先判断hashCode()值是否相等,如果相等就执行equals()方法看其返回值是什么,如果为true说明元素重复,不添加到集合中,如果为false直接添加到集合中;如果hashCode()值不相等直接添加到集合中 。


注意:
            1:Map集合的数据结构是对键有效,与值无关
            2:存储的是键值对形式的元素,键唯一,值可重复
        
              
 集合的使用情形:看需求是怎样的,根据需求来选择合适的集合来使用;下面就列出常见情况使用哪一种集合

  1.看是否是键值对形式,是就用Map ,不是就用Collection                  
  2.为键值对是排序就用 TreeMap,不排序就使用 HashMap               
  3.不是键值对形式时,如果需要安全就用 Vector,不要安全就用  ArrayList或LinkedList ;如果增删多就使用 LinkedList ;查询多就使用  ArrayList;              

        

发布了42 篇原创文章 · 获赞 6 · 访问量 2976

猜你喜欢

转载自blog.csdn.net/qq_44666176/article/details/99237039