Java 中的 Map
是一个非常强大和常用的数据结构,它提供了丰富的功能。以下是一些 Java 中 Map
的高级用法技巧示例代码:
1. 使用 compute
方法进行原子操作:
import java.util.HashMap;
import java.util.Map;
public class MapComputeExample {
public static void main(String[] args) {
Map<String, Integer> wordCountMap = new HashMap<>();
// 使用 compute 方法计算单词出现次数
String word = "apple";
wordCountMap.compute(word, (key, value) -> (value == null) ? 1 : value + 1);
System.out.println("Word count for '" + word + "': " + wordCountMap.get(word));
}
}
2. 使用 merge
方法合并值:
import java.util.HashMap;
import java.util.Map;
public class MapMergeExample {
public static void main(String[] args) {
Map<String, Integer> wordCountMap = new HashMap<>();
// 使用 merge 方法合并值
String word = "apple";
wordCountMap.merge(word, 1, Integer::sum);
System.out.println("Word count for '" + word + "': " + wordCountMap.get(word));
}
}
3. 使用 computeIfAbsent
避免空值判断:
import java.util.HashMap;
import java.util.Map;
public class MapComputeIfAbsentExample {
public static void main(String[] args) {
Map<String, StringBuilder> wordToBuilderMap = new HashMap<>();
// 使用 computeIfAbsent 避免空值判断
String word = "apple";
wordToBuilderMap.computeIfAbsent(word, k -> new StringBuilder()).append(" is delicious");
System.out.println(wordToBuilderMap.get(word));
}
}
4. 使用 forEach
迭代 Map:
import java.util.HashMap;
import java.util.Map;
public class MapForEachExample {
public static void main(String[] args) {
Map<String, Integer> wordCountMap = new HashMap<>();
wordCountMap.put("apple", 3);
wordCountMap.put("banana", 2);
wordCountMap.put("orange", 1);
// 使用 forEach 迭代 Map
wordCountMap.forEach((word, count) ->
System.out.println("Word: " + word + ", Count: " + count));
}
}
5. 使用 keySet
和 values
进行批量操作:
import java.util.HashMap;
import java.util.Map;
public class MapBatchOperationsExample {
public static void main(String[] args) {
Map<String, Integer> wordCountMap = new HashMap<>();
wordCountMap.put("apple", 3);
wordCountMap.put("banana", 2);
wordCountMap.put("orange", 1);
// 使用 keySet 批量操作键
wordCountMap.keySet().removeIf(word -> word.startsWith("a"));
// 使用 values 批量操作值
wordCountMap.values().replaceAll(count -> count * 2);
System.out.println("Updated Map: " + wordCountMap);
}
}
这些示例展示了一些 Map
的高级用法技巧,包括原子操作、合并值、避免空值判断、迭代、以及批量操作键和值。这些技巧可以帮助你更灵活地使用 Map
,提高代码的简洁性和可读性。
1 什么意思
这段代码演示了使用 Java 的 Map
接口中的 compute
方法来计算单词出现的次数。以下是代码的解释:
-
创建一个
HashMap
实例:Map<String, Integer> wordCountMap = new HashMap<>();
创建了一个
HashMap
实例,用于存储单词和它们的出现次数。 -
使用
compute
方法计算单词出现次数:String word = "apple"; wordCountMap.compute(word, (key, value) -> (value == null) ? 1 : value + 1);
compute
方法接收两个参数,第一个是要计算的键(这里是单词 “apple”),第二个是一个BiFunction
,用于计算新值。在这里,使用 lambda 表达式(key, value) -> (value == null) ? 1 : value + 1
,它的作用是:- 如果
value
为null
,表示这是第一次出现该单词,将值设为 1。 - 如果
value
不为null
,表示该单词已经出现过,将值加 1。
- 如果
-
打印单词出现次数:
System.out.println("Word count for '" + word + "': " + wordCountMap.get(word));
打印了单词 “apple” 出现的次数。
这段代码的目的是维护一个记录单词出现次数的 Map
,并通过 compute
方法对单词的出现次数进行计算。