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 里面添加当前字符串。


相关推荐
八角.。14 分钟前
方法参数与Debug按键
java·开发语言·jvm
BerryS3N20 分钟前
Java在人工智能与大模型时代的深度演进:从工程落地、高性能计算到企业级Agent与RAG架构实战指南
java·人工智能·架构
蔬菜_36 分钟前
前端转全栈-day2(修饰符)
java
fīɡЙtīиɡ ℡39 分钟前
怎么是用JWT
java·状态模式
唐青枫1 小时前
Java JCommander 实战详解:用注解解析命令行参数
java
卷无止境1 小时前
拯救乱码方块:pandas 绘图中文字体的一揽子解决方案
后端·python
李昊哲小课1 小时前
fastapi sse websocket 智能家居实时控制台
python·websocket·智能家居·fastapi·sse
杰佛史彦明 本王是暴君1 小时前
PyTorch KernelAgent 源码解读 ---(2)--- 总体流程
人工智能·pytorch·python
步行cgn1 小时前
carList.forEach(System.out::println)
java·开发语言·mybatis
Zane19941 小时前
别再手写 try/finally 了:一文讲透 with 语句背后的上下文管理器协议
后端·python