在 Java 中,可以使用多种方法来从一个 Map
中提取特定键对应的条目,并将其放入新的 Map
中。以下是几种常见的实现方式:
使用 Java 8 及以上版本的流(Stream)
使用流可以简洁地处理这个问题,并且代码易于理解。
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
public class MapFilterExample {
public static void main(String[] args) {
Map<String, Integer> originalMap = new HashMap<>();
originalMap.put("a", 1);
originalMap.put("b", 2);
originalMap.put("c", 3);
originalMap.put("d", 4);
Map<String, Integer> filteredMap = originalMap.entrySet()
.stream()
.filter(entry -> entry.getKey().equals("a") || entry.getKey().equals("b"))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
System.out.println(filteredMap); // 输出: {a=1, b=2}
}
}
使用传统的循环
这种方法适用于 Java 7 及更早版本,或者不希望使用流时。
import java.util.HashMap;
import java.util.Map;
public class MapFilterExample {
public static void main(String[] args) {
Map<String, Integer> originalMap = new HashMap<>();
originalMap.put("a", 1);
originalMap.put("b", 2);
originalMap.put("c", 3);
originalMap.put("d", 4);
Map<String, Integer> filteredMap = new HashMap<>();
for (Map.Entry<String, Integer> entry : originalMap.entrySet()) {
if ("a".equals(entry.getKey()) || "b".equals(entry.getKey())) {
filteredMap.put(entry.getKey(), entry.getValue());
}
}
System.out.println(filteredMap); // 输出: {a=1, b=2}
}
}
使用 Java 8 的方法引用
这种方法与使用流类似,但使用了方法引用来代替 lambda 表达式,使得代码更加简洁。
import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
public class MapFilterExample {
public static void main(String[] args) {
Map<String, Integer> originalMap = new HashMap<>();
originalMap.put("a", 1);
originalMap.put("b", 2);
originalMap.put("c", 3);
originalMap.put("d", 4);
Map<String, Integer> filteredMap = originalMap.entrySet()
.stream()
.filter(e -> "a".equals(e.getKey()) || "b".equals(e.getKey()))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
System.out.println(filteredMap); // 输出: {a=1, b=2}
}
}
使用 Guava 库
如果应用程序已经引入了 Google Guava 库,那么可以利用 FluentIterable
或其他工具类来简化操作。
import com.google.common.collect.Maps;
import com.google.common.collect.Iterables;
import java.util.HashMap;
import java.util.Map;
public class MapFilterExample {
public static void main(String[] args) {
Map<String, Integer> originalMap = new HashMap<>();
originalMap.put("a", 1);
originalMap.put("b", 2);
originalMap.put("c", 3);
originalMap.put("d", 4);
Map<String, Integer> filteredMap = Maps.filterKeys(originalMap, k -> "a".equals(k) || "b".equals(k));
System.out.println(filteredMap); // 输出: {a=1, b=2}
}
}
选择哪种方法取决于具体需求以及使用的 Java 版本。如果正在使用的是较新的 Java 版本,那么推荐使用流式 API,因为它提供了更现代且功能丰富的编程模型。
标签:map,Java,Map,java,util,key,put,import,originalMap From: https://blog.51cto.com/u_16694558/12007881