浅析对“JAVA集合”的理解

目录

JAVA集合的基本描述

Collection接口:单列集合

List:有序列表集合

Set:无序散列集合

           Set集合的新增过程:

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

Java Iterator(迭代器)

Collection集合图示

Map接口:双列集合

Collections工具类

 如何选择集合?


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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值