Java 集合(ArrayList、LinkedList、HashMap、HashSet、LinkedHashMap、LinkedHashSet)【补充复习】

devtools/2024/9/23 22:33:29/

Java 集合(ArrayList、LinkedList、HashMap、HashSet、LinkedHashMap、LinkedHashSet)【补充复习】

  • Java 集合概述
    • Collection 接口继承树
    • Map 接口继承树
  • Collection 接口方法
    • 使用 iterator 接口遍历集合元素
    • 使用 forearch 遍历集合元素
  • List 接口
    • List 实现类之一:ArrayList
    • List 实现类之二:LinkedList
  • Set 接口
    • Set 实现类之一:HashSet
    • Set 实现类之二:LinkedHashSet
  • Map 接口方法
    • Map 实现类之一:HashMap
    • Map 实现类之二:LinkedHashMap

Java 集合概述

Java 中的集合主要分为 Collection 和 Map 两大体系

  • Collection 接口:
    • Set:元素无序、不可重复的集合。
    • List:元素有序、可以重复的集合。
  • Map 接口:具有映射关系 key-value 的集合。

Collection 接口继承树

在这里插入图片描述

Map 接口继承树

在这里插入图片描述

Collection 接口方法

Collection 提供的接口方法,set、list 都可以使用。

在这里插入图片描述
在这里插入图片描述

使用 iterator 接口遍历集合元素

  • iterator 对象称为迭代器(设计模式的一种),主要用于遍历 Collection 集合中的元素。
  • 所有实现了 Collection 接口的集合类都有一个 iterator() 方法。
java">Iterator iterator = arrayList.iterator();
while (iterator.hasNext()) {System.out.println(iterator.next());
}

使用迭代器进行遍历的时候,迭代器会创建一个对集合内部的快照,并且在遍历的时候期望保持该集合的状态不变。如果迭代过程中集合的元素被改变(添加、删除、修改),迭代器的内部状态和集合的状态不一致就会抛出异常。
解决办法:

  1. 使用并发集合
  2. 删除元素时,可以使用迭代器自带的 remove 方法

使用 forearch 遍历集合元素

在这里插入图片描述

List 接口

List 接口提供了一些根据索引来操作集合元素的方法

java">// 向指定位置添加元素
void add(int index, Object obj);// 向指定位置添加一个集合
boolean addAll(int index, Collection objs);// 获取指定位置的元素
Object get(int index);// 返回第一个元素出现的下标
int indexOf(Object obj);// 返回最后一个元素出现的下标
int lastIndexOf(Object obj);// 移除指定位置的元素
Object remove(int index);// 修改指定位置的元素
Object set(int index, Object obj);// 获取集合中的一段元素,从 fromIndex 下标开始,到 toIndex - 1 下标位置
List subList(int fromIndex, int toIndex);

List 实现类之一:ArrayList

本质上是一个变成数组(默认长度是 10)
ArrayList 是线程不安全的,Vector 是线程安全的,即使为保证 List 线程安全,也不推荐使用 Vector。

List 实现类之二:LinkedList

对于频繁插入和删除元素的操作,建议是 LinkedList,效率会高。

新增方法:

java">// 头部插入一个元素
void addFirst(Object obj);// 尾部插入一个元素
void addLast(Object obj);// 获取头部元素
Object getFirst();// 获取尾部元素
Object getLast();// 移除头部元素
Object removeFirst();// 移除尾部元素
Object removeLast();

Set 接口

Set 判断两个对象是否相等使用的不是 ==,而是 equals 方法。

Set 实现类之一:HashSet

  • HashSet 不是线程安全的
  • 不能保证元素的排列顺序
  • 集合元素可以是 null
  • 当向 HashSet 集合中存入一个元素时,HashSet 会调用该对象的 hashCode() 方法来得到该对象的 hashCode 值,然后根据 hashCode 值来决定该对象在 HashSet 中的存储位置。
  • HashSet 集合判断两个元素相等的标准:两个对象通过 hashCode() 方法比较相等,并且两个对象的 equals() 方法返回值也相等。

Set 实现类之二:LinkedHashSet

  • LinkedHashSet 是 HashSet 的子类
  • LinkedHashSet 根据元素的 HashCode 值来决定元素的存储位置,同时使用链表维护元素的次序。

Map 接口方法

java">// 添加元素
Object put(Object key, Object value);// 移除元素
Object remove(Object key);// 添加全部元素
void putAll(Map t);// 清除元素
void clear();// 根据 key 查询
Object get(Object key);// 判断 key 是否存在
boolean containsKey(Object key);// 判断 value 是否存在
boolean containsKey(Object value);// 集合大小
int size();// 判断是否为空
boolean isEmpty();// 判断是否相等
boolean equals(Object obj);

Map 实现类之一:HashMap

  • HashMap 判断两个 key 相等的标准是:两个 key 通过 equals() 返回的 true,hashCode() 值也相等。
  • HashMap 判断两个 value 相等的标准是:两个 value 通过 equals() 返回的 true。

Map 实现类之二:LinkedHashMap

  • 按照插入顺序迭代

http://www.ppmy.cn/devtools/5175.html

相关文章

小型燃气站3D可视化:打造安全高效的燃气新时代

随着科技的不断进步,越来越多的行业开始融入3D可视化技术,燃气行业也不例外。 小型燃气站作为城市燃气供应的重要节点,其安全性和运行效率至关重要。传统的燃气站管理方式往往依赖于人工巡检和纸质记录,这种方式不仅效率低下&…

C++11 列表初始化、initializer_list、auto、decltype、array

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C 🔥座右铭:“不要等到什么都没有了,才下…

NPM 命令备忘单

NPM 简介 Node Package Manager (NPM) 是 Node.js 环境中不可或缺的命令行工具,充当包管理器来安装、更新和管理 Node.js 应用程序的库、包和模块。对于每个 Node.js 开发人员来说,无论他们的经验水平如何,它都是一个关键工具。 NPM 的主要…

回归预测 | Matlab实现SA-BP模拟退火算法优化BP神经网络多变量回归预测

回归预测 | Matlab实现SA-BP模拟退火算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现SA-BP模拟退火算法优化BP神经网络多变量回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现SA-BP模拟退火算法优化BP神经网络多变量回归预测&#xff0…

ELK日志分析系统之Kafka

目录 一、消息队列基本介绍 1、为什么需要消息队列(MQ) 2、使用消息队列的好处 1.解耦 2.可恢复性 3.缓冲 4.灵活性 & 峰值处理能力 5.异步通信 3、Kafka消息队列的两种模式 1.点对点模式 2.发布/订阅模式 二、Kafka基本介绍 1、Kafka定义 2、Kafka概念 3、…

学习java时候的笔记(十九)

正则表达式 作用: 校验字符串是否满足规则在一段文本中查找满足要求的内容 字符类(只匹配一个字符) 说明[abc]只能是a,b或c[^abc]除了a,b,c之外的任何字符[a-zA-Z]a 到 z, A 到 Z(范围)[a-d[m-p]]a 到 d, 或 m 到 p[a - z && [def]]a 到 z和def的交集。为: d, e, f…

【linux】多路径|Multipath I/O 技术

目录 简略 详细 什么是多路径? Multipath安装与使用 安装 使用 Linux下multipath软件介绍 附录 配置文件说明 其他解 简略 略 详细 什么是多路径? 普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系。 而到了分布式环境,主机和存储网络连…

Python练习03

题目 解题思路 Demo58 通过字符串切片来进行反转操作 def _reverse():"""这是一个反转整数的函数"""num input("请输入想要反转的整数")print(num[::-1]) 运行结果 Demo61 首先制作一个判断边长的函数,通过三角形两边…