stram对list做处理
时间: 2025-07-06 22:56:40 浏览: 2
### 使用 Java Stream API 对 `List` 进行处理
#### 基础操作
Java 8 引入的 Stream API 提供了一种声明性的方式来进行集合数据的操作,这不仅简化了代码结构还提高了效率[^1]。
对于简单的转换需求,比如将一个列表中的元素映射成另一种形式,可以使用流的中间操作之一——`map()` 方法。下面是一个例子:
```java
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Example {
public static void main(String[] args) {
List<String> stringNumbers = Arrays.asList("1", "2", "3");
// 将字符串类型的数字转化为整数类型
List<Integer> integers = stringNumbers.stream()
.map(Integer::parseInt)
.collect(Collectors.toList());
System.out.println(integers); // 输出: [1, 2, 3]
}
}
```
#### 中间操作与终端操作组合
当需要执行更复杂的变换时,可以通过链接多个中间操作(如过滤、排序等),最后再调用一个或几个终止操作完成整个过程。这里展示了一个先过滤后收集的例子:
```java
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
class Product {
private String name;
private double price;
public Product(String name, double price) {
this.name = name;
this.price = price;
}
@Override
public String toString() {
return "{name='" + name + "', price=" + price + "}";
}
// Getters and setters...
}
public class Main {
public static void main(String[] args) {
List<Product> products = new ArrayList<>(Arrays.asList(
new Product("Apple", 0.7),
new Product("Banana", 0.5),
new Product("Orange", 0.9)));
// 找出价格大于等于0.6的商品,并按名称降序排列
List<String> result = products.stream()
.filter(p -> p.getPrice() >= 0.6)
.sorted(Comparator.comparing(Product::getName).reversed())
.map(Product::getName)
.collect(Collectors.toList());
System.out.println(result);
}
}
```
这段代码展示了如何创建产品列表的流,应用一系列条件来获取符合条件的产品名列表[^2]。
#### 高级操作:规约与收集
除了基本的映射和筛选外,Stream API 支持更为强大的聚合功能,例如求和、平均值计算或是构建新的集合实例。这些都可以通过 `reduce()` 或者 `collect()` 来实现。以下是将 `List<User>` 转换成 `Map<Id, User>` 的具体做法[^4]:
```java
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
// Assuming there's a method to get the list of users.
List<User> userList = getUserList();
// Convert List<User> into Map<Integer, User>
Map<Integer, User> userById = userList.stream()
.collect(Collectors.toMap(User::getId, Function.identity()));
System.out.println(userById);
```
此片段说明了怎样利用 `Collectors.toMap()` 函数把用户 ID 映射为其对应的实体对象,从而形成键值对存储于哈希表中[^3]。
阅读全文
相关推荐


















