Collection体系

本文介绍了Java中的Collection体系,包括List、Set和Map的主要实现类及其特点。详细讨论了ArrayList、HashSet、LinkedHashSet、TreeSet以及它们的常用方法。还提到了Guava库中的工具类Lists和Sets的使用,并强调了修改集合时需要注意的并发修改异常问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Collection

Collection是Java所有集合类的父类。 常见的有:List、Set、Map、Tree。

  • 常用方法:
     retailAll(Collection t); 取两个集合的交集。
     contains(T t); 是否包含某个值。
  • 对应的工具类:Collections
     常用方法:
      1. csort(Collection t); 对实现了Comparable接口的集合元素排序,默认是升序。
      2. reverse(Collection t); 对集合逆序排列。如:915689 —> 986519
      hashCode(Object o); 此方法是继承与Object类的可以重写,也可以通过工具类调用。

1.List

  • 常见的有:ArrayList、HashList、LinkedList。
  • 常用方法:
    Collection的方法ArrayList也有。
  • 对应的工具类: Lists
     这个需要额外的导包:Guava。
ArrayList
  • 常用方法:
     new ArrayList(Collection t); 可以将Collection的子类直接转换为List集合。
  • ArrayList的动态扩容:
     ArrayList的底层其实是数组,如果当我们添加的元素超出原有的底层数组长度时,他会重新创建一个是原来数组长度1.5倍的数组。并通过Arrays.copyOf()方法复制原来数组的数据。

2.Set

  • 特性:无序、元素唯一。
  • 常见的有:HashSet、LinkedHashSet
  • 常用方法:
     Collection的方法HashSet也有。
  • 对应的工具类: Sets
     这个需要额外的导包:Guava。
HashSet

 1. 元素唯一:
  HashSet元素唯一并不是我们每插入一个元素就调用方法contains(Object o),这样效率太低下。他是通过Objects.hashCode()方法将元素们分类如下图。这样在hashCode值相同的列中去找可以有效的提高效率。
在这里插入图片描述
 2. 常用方法:
  new HashSet(Collection t); 可以将Collection的子类直接转换为Set集合,且去掉Collection集合中重复的元素只保留一个。
 通过查看源码发现HashSet本质就是HashMap的‘key’,他们的Iterator(迭代器)是同一个。
  如图:
在这里插入图片描述
在这里插入图片描述
 因此这里需要额外的注意,如果通过的Map.keySet();获取的set集合,如果改变Map的key也会跟着改变。 Map.values()方法返回Map的值集合,以Collection 的形式返回,他的Iterator也是和Map Value的Iterator相同,如果添加或删除也是会直接影响Map的值
  如图:
在这里插入图片描述
 3. Iterator扩展:
  当一个集合(Map、Collection)创建成功并赋值,Iterator(迭代器)就和值绑定了。因此我们需要改变集合中的某个数据底层都是通过Iterator改变的。虽然List集合可以通过“for循环”遍历,但是绝对不能通过“for循环遍历”改变、删除集合中的某个值。ConcurrentModificationException(并发修改异常)。

LinkedHashSet

 1. 特性:
  * 他是有序的。是按插入时的顺序排序。
  * 元素唯一。
 2. 常用方法:
  new LinkedHashSet(Collection t); 可以将Collection的子类直接转换为linkedHashSet集合,且去掉Collection集合中的重复的元素只保留一个。

TreeSet

 1. 特性:有序,默认是升序排序。
 2. 常用方法:
  new TreeSet(Collection t); 可以将Collection的子类直接转换为TreeSet集合,且默认的就会排序。 要求元素实现Comparable接口才能实现排序。
 3. TreeSet 本质上也是TreeMap。
在这里插入图片描述

3.Map

 1. 特性:使用的键值对的方式存储数据。 key不能重复value可以。
 2. 常见的有:Properties、HashMap…。
 常用方法:
  * keySet(); 返回Map集合的key以Set集合的形式返回map的key。
  * values(); 返回Map集合的值以Collection的形式返回map的value。
  如果修改keySet()、values()方法的返回值会直接影响HasdMap集合的数据。因为他们的Iterator和Map的Iterator是同一个。
 源码分析: 在这里插入图片描述
在这里插入图片描述

如有错误的地方还望各位网友指出改正。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值