0


浅析对“JAVA集合”的理解

JAVA集合的基本描述:

Java 中的集合框架,主要是由Java.util包中的集合接口与实现类组成,主要包括 Collection(单列集合)Map(双列集合) 以及相关实现类,并且包括Iterator迭代器 Colletions等工具类。

Collection接口:单列集合

定义了存取一组对象的方法的集合,包含List接口和Set接口。

  • List:有序列表集合,元素可以重复,索引从0开始

              主要实现类有:
    
                      Arraylist:底层是数组   特点:查询快增删慢,线程不安全效率高
    
                      linkedlist:底层是双向链表,特点:查询慢增删快
    
                      Vector:和Arraylist相似,但线程安全效率低
    
  • Set:无序散列集合,元素不可以重复

              Set的主要实现类有:
    
                      HashSet:无序(新增顺序和获取顺序不一定一致)。底层是哈希表(数组+链表+红黑树)
    
                      LinkedHashSet:有序。底层是链表+哈希表
    
                      TreeSet:可以排序。底层是红黑树
    

注:HashSet底层是HashMap,LinkedHashSet底层是LinkedHashMap,TreeSet底层是TreeMap。

Set集合的新增过程:

  1. 计算新增元素的哈希值(十进制的地址值),调用hashCode()方法;

  2. 通过哈希值%数组长度,去确定元素新增的索引值位置

            如果该位置没有元素:直接新增
             如果该位置有元素:判断这两个元素是否相同
                 如果不相同:挂到最后一个元素下面
                 如果相同:不新增
    
                 判断元素是否相同的标准:
                     比较哈希值相同 && (地址值相同 || equals相同)
    

    总结:如果自定义类型的对象,我们希望添加到HashSet集合中
    我们认为成员变量的值相同,就为同一个元素,
    则需要覆盖重写hashCode方法和equals方法

Collection接口中List,Set中的公共方法:

方法描述add()将元素插入到指定位置clear()删除集合中的所有元素contains()判断元素是否存在remove()删除集合中的某个元素size()判断元素数量isEmpty()判断集合是否为空toArray()将集合转换为数组replace()将给定的操作内容替换掉数组中的某一个元素

Java Iterator(迭代器)

Iterator 类位于 java.util 包中,是一个接口,用于循环遍历集合中的元素,可用于迭代 ArrayList 和 HashSet 等集合。

迭代器 Iterator 的基本方法是 next 、hasNext 和 remove。

  • 调用 Iterator.next() 会返回迭代器的下一个元素,并且更新迭代器的状态(获取下一个元素)。
  • 调用 Iterator.hasNext() 用于判断集合中是否还有元素。
  • 调用 Iterator.remove() 将迭代器返回的元素删除(获取谁,删除谁)。

注意:通过迭代器遍历集合的失败,不能通过集合对象增、删元素

  •     如果要删除可以通过迭代器对象的删除方法删(使用Iterator.remove() )。
    

Iterator的具体使用如下图所示:

遍历集合也可以使用增强for循环:

    增强for循环:遍历集合的时候,底层就是迭代器

      for(数据类型 变量名:集合名){
               //数据类型:集合的泛型
         }

Collection集合图示:

Map<K,V>接口:双列集合

采用“key-value”保存。

  • 特点:
  1. 一个元素是有一个K,一个V两部分组成;
  2. K V可以是任意的引用数据类型;
  3. 一个K对应唯一的一个V,K不能重复。
  • 常用实现类:
  1. HashMap:底层是哈希表。无序,线程不安全,效率高
  2. LinkedHashMap:底层是链表+哈希表。有序
  3. TreeMap:底层是红黑树。可排序
  4. Hashtable:线程安全,效率低

Map集合图示:

Collections工具类

  • Collections 是一个操作 Set、List 和 Map 等集合的工具类

  • Collections 中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作
    方法描述addALL(Collection,T...);将所有元素插入到集合中shuffle(List):对 List 集合元素进行随机排序sort(List)根据元素的自然顺序对指定 List 集合元素按升序排序sort(List,Comparator)根据指定的 Comparator 产生的顺序对 List 集合元素进行排序

    如何选择集合?

  • 根据集合的特点来选用:需要根据键值获取到的元素值时就选用Map接口下的集合,需要排序时选用TreeMap,不需要排序时选用HashMap,需要保持有序选择LinkedHashMap。

  • 只需要存放元素值时,就选择实现Collection接口的集合,需要保证元素唯一时选择实现Set接口的集合比如TreeSet或者HashSet,不需要就选择实现List接口的比如Arraylist或者LinkedList。

标签: java 开发语言

本文转载自: https://blog.csdn.net/weixin_71118996/article/details/124971499
版权归原作者 星星慢 所有, 如有侵权,请联系我们删除。

“浅析对&ldquo;JAVA集合&rdquo;的理解”的评论:

还没有评论