ArrayList、LinkedList、HashSet以及HashMap

本文深入解析Java集合框架,包括Collection和Map接口的不同实现类,如ArrayList、LinkedList、HashSet、HashMap等,探讨它们的特点、应用场景及内部实现机制。

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

集合类


集合类是一种工具类,像是容器,储存任意数量的具有共同属性的对象。

集合的作用:

  1. 在类的内部,对数据进行组织
  2. 简单而快速的搜索大数量的条目
  3. 有的集合接口提供了一系列排列有序的条目,并且可以在序列中快速的插入或删除有关元素
  4. 有的集合接口提供了映射关系,可以通过关键字(key)去快速查到对应的唯一对象,关键字可以是任意类型的

集合和数组的区别:

  1. 数组长度固定,集合的长度在运行时可以动态扩展
  2. 数组可以通过下标访问元素,类型固定,而有的集合可以通过任意类型的键(key)查找所映射的具体对象。

泛型可以规定集合中的数据类型:

集合中的元素,可以是任意类型的对象(对象的引用),如把某个对象放入集合,则会忽略他的类型,而把他当作Object处理。
泛型则是规定了某个集合只可以存放特定类型的对象,会在编译期间进行类型的检查,可以直接按指定类型获取集合元素。泛型集合中,不能添加泛型规定的类型及其子类型之外的对象,否则会报错!
泛型集合中的限定类型不能使用基本数据类型,可以使用包装类型限定允许存入的基本数据类型。int–>Integer,long–>Long,boolean–>Boolean,如:List list = new ArrayList();

Java集合类包含两部分

  • Collection接口(存储一个独立的对象),包含三个子接口
    1、List接口,存储排列有序可重复的对象
    2、Queue接口,存储排列有序可重复的元素
    3、set接口,存储的元素无序不可重复
  • Map接口,内部以 key和value两个对象为映射存储数据

List接口及其实现类–>ArrayList

  1. List是元素有序并且可以重复,被称为序列
  2. List接口可以精确控制每个元素的插入位置,删除某个位置的元素
  3. ArrayList底层是由数组实现的

Queue接口及其实现类–>LinkedList

  1. LinkedList是基于链表的实现方式

  2. LinkedList与ArrayList的区别:对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。

Set接口及其实现类–>HashSet

  1. set接口是元素无序且不可以重复的集合,被称为集
  2. HashSet—-哈希集,是Set一个重要的实现类
  3. Set中的循环只能使用forEach以及Iterator。
  4. Set中添加某个对象,无论添加多少次,最终只会保留一个该对象(对象的引用),并且保留的是第一次添加的。

Map接口及其实现类–>HashMap

  1. Map接口提供了一种映射关系,其中的元素以键值对(key-value)的形式存储,能够实现根据Key快速查找value。
  2. Map中的键值对是以Entry类型的对象实例存在的
  3. 键(key)不可以重复,value可以;每个键最多只能映射到一个值,一个值可以对应多个键。
  4. Map接口提供了分别返回key值的集合、value值的集合以及Entry(键值对)的集合的方法
  5. Map支持泛型
  6. HashMap是Map的一个重要的实现类,也是最常用的,基于哈希表的实现。
  7. HashMap中的Entry对象是无序排列的
  8. key和value值都可以为null,不过HashMap只有一个key为null的映射(key不能重复)
    注意:对象存入集合都变成Object类型,取出时需要类型转换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值