java中使用stram分组之后处理分组后的map会对原始数据造成污染么
时间: 2025-01-27 17:15:53 浏览: 43
在Java中使用Stream API进行分组操作时,处理分组后的Map不会对原始数据造成污染。Stream API的设计理念是提供一种声明式的、不可变的数据处理方式。分组操作通常会生成一个新的Map,而不会修改原始数据。
具体来说,Stream的分组操作会生成一个新的Map,其中包含分组后的数据。原始数据仍然保持不变,除非你在处理过程中显式地修改了数据源。以下是一个示例代码,展示了如何使用Stream API进行分组操作:
```java
import java.util.*;
import java.util.stream.*;
public class StreamGroupingExample {
public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person("Alice", "New York"),
new Person("Bob", "New York"),
new Person("Charlie", "Los Angeles"),
new Person("David", "New York")
);
Map<String, List<Person>> groupedByCity = people.stream()
.collect(Collectors.groupingBy(Person::getCity));
// 处理分组后的Map
groupedByCity.forEach((city, persons) -> {
System.out.println("City: " + city);
persons.forEach(person -> System.out.println(" " + person.getName()));
});
// 打印原始数据,确认未修改
System.out.println("Original Data:");
people.forEach(person -> System.out.println(person.getName() + " - " + person.getCity()));
}
}
class Person {
private String name;
private String city;
public Person(String name, String city) {
this.name = name;
this.city = city;
}
public String getName() {
return name;
}
public String getCity() {
return city;
}
}
```
在上述代码中,`groupedByCity`是一个新的Map,包含按城市分组后的数据。原始的`people`列表保持不变,输出结果中可以看到原始数据未被修改。
阅读全文
相关推荐
















