文章目录
-
- 最常用的记忆表
- [一、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 里面添加当前字符串。