JDK1.8 Collection知识点与代码分析--整体框架

本文深入探讨了Java中的Collection包,重点解析了List、Map和Set三大接口及其常用实现类的特性与实现原理。内容包括Collection的基本API,如add、remove、contains等操作,以及Set的无重复性,List的有序性和Map的键值对操作。还详细讨论了ArrayList、LinkedList、HashMap、LinkedHashMap、TreeMap和HashSet、TreeSet在JDK1.8中的具体应用和优化。

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

Java中的Collection包是JDK中非常重要的一个包, 也是面试中考察的重点, 本文自顶向下的对Collection包的常用数据结构之间的关系结构到Collection包中的常用类的实现原理的知识点进行一定的整理, 供自己和大家复习使用.

Collection包的整体结构

在这里插入图片描述
Collection自身是一个接口, 是对集合这一概念的抽象, 提供的常用API有:

  • add(Object obj) 向Collection添加元素
  • remove(obj) 如果obj在集合中, 将其移除
  • contains(obj) 判断是否包含
  • clear()
  • size()
  • isEmpty()
  • iterator() 返回对集合元素的迭代器
  • addAll(Collection<? extends E> c) 将一个集合的元素添加到该集合中
  • containsAll(Collection<? extends E> c)
  • retainAll(Collection c) 只保留集合里面包含的
  • removeIf(Predicate<? super E> filter) [这个方法很香, 不用自己迭代了]

Collection下, 有三个重要的接口分别是Set, List, Map, 所代表的分别是无重复的集合, 有序集合和键值对集合的集合的子集. 其分别提供的API有

  • Set 和Colleciton的概念最接近, 区别在于Set中无重复, API几乎一致
  • List list的特点是有序, 链表, 需要考虑的性能问题是是否支持随机访问, 增删的时间复杂度这些, 因为是有序的, 其API额外提供了一些和索引相关的内容
    • add(index, obj) 在index位置添加
    • remove(index) 删除index位置的元素
    • set(index, obj) 修改…
    • get(index) 获取index位置的对象
    • indexOf(obj) list中第一个obj的下标
  • Queue 队列接口是队列数据结构的抽象, 队尾加, 队首减, 提供的API有加减和查队首元素的, 有两套api出现异常时, 一套会抛Exception, 一套只返回null
    • add(obj) & offer(obj) 在队尾添加元素
    • remove() & poll() 从队首移除元素
    • element() & peek() 获得队首元素但不移除
  • Map 映射接口并不继承于Colleciton, 不是广义的Collection, 其存储的是键值对, 因此API增加了对键和值的操作, 增删该查也有所不同
    • put(k, v) , putIfAbsent(k,v) 增和改
    • replace(k, v), replace(k, ov, nv) 只能在存在时才能改
    • remove(k), remove(k, v) 只有都对上才删除
    • get(k), getOrDefault(k) 查
    • compute(k, function) 对键值对进行计算
    • containsKey(k)
    • containsValue(v)
    • keySet()
    • entrySet()
    • values()

List类

JDK1.8 Collection知识点与代码分析–ArrayList&LinkedList

Map类

JDK1.8 Collection知识点与代码分析–HashMap
JDK1.8 Collection知识点与代码分析–LinkedHashMap
JDK1.8 Collection知识点与代码分析–TreeMap

Set类

JDK1.8 Collection知识点与代码分析–HashSet&TreeSet

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值