HashMap 可以用stream吗
时间: 2024-01-24 17:04:13 浏览: 229
是的,Java 8之后的HashMap可以使用Stream。HashMap实现了Map接口,而Map接口继承了Collection接口,因此HashMap也可以使用Stream API。
下面是一个简单的示例代码,展示了如何使用Stream API对HashMap进行遍历和操作:
```java
import java.util.HashMap;
import java.util.Map;
public class HashMapStreamExample {
public static void main(String[] args) {
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
map.put("pear", 4);
// 遍历Map
map.entrySet().stream()
.forEach(entry -> System.out.println(entry.getKey() + " -> " + entry.getValue()));
// 使用map()方法对Map进行操作
Map<String, Integer> newMap = map.entrySet().stream()
.filter(entry -> entry.getValue() % 2 == 0)
.map(entry -> new HashMap.SimpleEntry<>(entry.getKey(), entry.getValue() * 2))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
System.out.println(newMap);
}
}
```
在上面的代码中,我们首先创建了一个HashMap对象`map`,并向其中添加了4个键值对。接着,我们使用`entrySet()`方法将HashMap转换为一个Set集合,再使用`stream()`方法将其转换为一个流。然后,我们可以使用Stream API提供的各种中间操作和终止操作对Map进行操作。
在示例代码中,我们使用`forEach()`方法遍历了Map,并打印出每个键值对。我们还使用`filter()`方法过滤了Map中值为偶数的键值对,并使用`map()`方法将每个值都乘以2。最后,我们使用`collect()`方法将结果转换为一个新的Map对象`newMap`,其中只包含符合条件的键值对。
因此,我们可以使用Stream API对HashMap进行各种操作,包括过滤、映射、排序、统计等等。
阅读全文