Java 常见集合方法

文章目录

    • 最常用的记忆表
    • [一、List 常见方法](#一、List 常见方法)
      • [1. 添加元素](#1. 添加元素)
      • [2. 根据下标获取元素](#2. 根据下标获取元素)
      • [3. 修改元素](#3. 修改元素)
      • [4. 删除元素](#4. 删除元素)
      • [5. 获取长度](#5. 获取长度)
      • [6. 判断是否包含某个元素](#6. 判断是否包含某个元素)
    • [二、Set 常见方法](#二、Set 常见方法)
      • [1. 添加元素](#1. 添加元素)
      • [2. 判断是否存在](#2. 判断是否存在)
      • [3. 删除元素](#3. 删除元素)
      • [4. 获取数量](#4. 获取数量)
    • [三、Map 常见方法](#三、Map 常见方法)
      • [1. 添加键值对](#1. 添加键值对)
      • [2. 根据 key 获取 value](#2. 根据 key 获取 value)
      • [3. 判断是否包含某个 key](#3. 判断是否包含某个 key)
      • [4. 获取默认值](#4. 获取默认值)
      • [5. 删除键值对](#5. 删除键值对)
      • [6. 遍历所有 key](#6. 遍历所有 key)
      • [7. 遍历所有 value](#7. 遍历所有 value)
      • [8. 遍历 key 和 value](#8. 遍历 key 和 value)
    • 四、结合你这道题理解

Java 里常用集合主要有三类:

java 复制代码
List        // 有序、可重复
Set         // 无序、不重复
Map         // 键值对

1.用 Set 集合,主要是为了两个目的:快速判断某个数字存不存在 ,以及自动去重

2.可变数组是LIst类


最常用的记忆表

集合 常用方法 作用
List add() 添加元素
List get() 根据下标取元素
List set() 修改元素
List remove() 删除元素
List size() 获取长度
Set add() 添加元素,自动去重
Set contains() 判断是否存在
Map put() 添加/修改键值对
Map get() 根据 key 取 value
Map containsKey() 判断 key 是否存在
Map getOrDefault() 获取值,没有就用默认值
Map keySet() 获取所有 key
Map entrySet() 获取所有 key-value

简单记:

java 复制代码
List:按顺序存数据
Set:去重存数据
Map:按 key 找 value

一、List 常见方法

List 可以理解成:可变数组

常用实现类:

java 复制代码
ArrayList
LinkedList

1. 添加元素

java 复制代码
list.add("eat");

作用:往列表末尾添加一个元素。

java 复制代码
List<String> list = new ArrayList<>();

list.add("eat");
list.add("tea");

System.out.println(list);

输出:

java 复制代码
[eat, tea]

2. 根据下标获取元素

java 复制代码
list.get(0);

示例:

java 复制代码
System.out.println(list.get(0));

输出:

java 复制代码
eat

注意:List 的下标从 0 开始。


3. 修改元素

java 复制代码
list.set(0, "ate");

意思是:把下标 0 的元素改成 "ate"

java 复制代码
list.set(0, "ate");

System.out.println(list);

输出:

java 复制代码
[ate, tea]

4. 删除元素

java 复制代码
list.remove(0);

或者:

java 复制代码
list.remove("tea");

示例:

java 复制代码
list.remove("tea");
System.out.println(list);

5. 获取长度

java 复制代码
list.size();

示例:

java 复制代码
System.out.println(list.size());

6. 判断是否包含某个元素

java 复制代码
list.contains("eat");

返回值是 boolean

java 复制代码
true
false

二、Set 常见方法

Set 可以理解成:不允许重复的集合

常用实现类:

java 复制代码
HashSet
TreeSet
LinkedHashSet

1. 添加元素

java 复制代码
set.add("eat");

示例:

java 复制代码
Set<String> set = new HashSet<>();

set.add("eat");
set.add("eat");
set.add("tea");

System.out.println(set);

输出可能是:

java 复制代码
[eat, tea]

因为 Set 会自动去重。


2. 判断是否存在

java 复制代码
set.contains("eat");

这个方法很常用,尤其是题目里要判断某个元素有没有出现过。


3. 删除元素

java 复制代码
set.remove("eat");

4. 获取数量

java 复制代码
set.size();

三、Map 常见方法

Map 可以理解成:通过 key 找 value

比如:

java 复制代码
"aet" -> ["eat", "tea", "ate"]

常用实现类:

java 复制代码
HashMap
LinkedHashMap
TreeMap

1. 添加键值对

java 复制代码
map.put(key, value);

示例:

java 复制代码
Map<String, Integer> map = new HashMap<>();

map.put("apple", 3);
map.put("banana", 2);

意思是:

java 复制代码
apple -> 3
banana -> 2

2. 根据 key 获取 value

java 复制代码
map.get("apple");

示例:

java 复制代码
System.out.println(map.get("apple"));

输出:

java 复制代码
3

3. 判断是否包含某个 key

java 复制代码
map.containsKey("apple");

这个在算法题里非常常用。

比如:

java 复制代码
if (!map.containsKey(key)) {
    map.put(key, new ArrayList<>());
}

意思是:

如果 map 里还没有这个 key,就先创建一个空列表。


4. 获取默认值

java 复制代码
map.getOrDefault(key, 默认值);

常用于统计次数。

java 复制代码
map.put("apple", map.getOrDefault("apple", 0) + 1);

意思是:

如果 apple 之前出现过,就次数 +1;

如果 apple 没出现过,就从 0 开始 +1。


5. 删除键值对

java 复制代码
map.remove("apple");

6. 遍历所有 key

java 复制代码
for (String key : map.keySet()) {
    System.out.println(key);
}

7. 遍历所有 value

java 复制代码
for (Integer value : map.values()) {
    System.out.println(value);
}

8. 遍历 key 和 value

java 复制代码
for (Map.Entry<String, Integer> entry : map.entrySet()) {
    System.out.println(entry.getKey() + " " + entry.getValue());
}

四、结合你这道题理解

你这道题里有:

java 复制代码
Map<String, List<String>> map = new HashMap<>();

意思是:

java 复制代码
key 是 String
value 是 List<String>

比如最后可能长这样:

java 复制代码
{
  "aet" -> ["eat", "tea", "ate"],
  "ant" -> ["tan", "nat"],
  "abt" -> ["bat"]
}

所以:

java 复制代码
map.get(key).add(str);

里面用到了两个集合方法:

java 复制代码
map.get(key)

先从 Map 里根据 key 取出对应的 List

java 复制代码
.add(str)

再往这个 List 里面添加当前字符串。


相关推荐
Joseph 乔9 分钟前
【Python】卸载与重装
经验分享·python
归去来?10 分钟前
Python 常用优雅写法
开发语言·python
名字还没想好☜13 分钟前
Java 21 switch 模式匹配实战:sealed 接口 + record 替代 if-instanceof 链
java·人工智能·后端·python·spring
深蓝海拓13 分钟前
基于QtPy (PySide6) 的PLC-HMI工程实战记录(五)为当前动作画面的信号连接变量
网络·笔记·python·学习·pyqt
devilnumber21 分钟前
Java 30 组高频技术 / 知识点多角度对比
java·开发语言
摇滚侠27 分钟前
《SpringBoot 3:入门与应用实战》第 6 章 Spring Boot 最佳实践 阅读笔记 10
java·spring boot·笔记
何以解忧,唯有..30 分钟前
Python 异常处理完全指南:从基础到高级实践
开发语言·前端·python
DLYSB_35 分钟前
让 PLC“开口说话”:基于 Modbus TCP 的声光语音告警设计与 Python 调试
python·网络协议·tcp/ip·报警灯
今日热点36 分钟前
微信小程序主体变更公证全流程实操解析:场景条件、材料规范、驳回避坑与Python校验脚本实现
python·微信小程序·小程序
O。O蛋黄酥啊37 分钟前
GraphRAG 和 LightRAG 详解与对比
人工智能·python·算法·rag·graphrag·lightrag