Java8:从List中提取属性值的实战教程

版权申诉
5星 · 超过95%的资源 22 下载量 180 浏览量 更新于2024-09-12 2 收藏 90KB PDF 举报
"Java8从list集合中提取特定属性值的集合操作实例" 在Java8中,处理集合数据变得更加高效和简洁,特别是通过引入流(Stream)API。本案例重点讲解了如何利用Java8的流API从一个`List<Order>`集合中提取`Order`对象的特定属性,如订单编号(orderNo)和ID(id),并将这些属性值转化为新的集合。 首先,我们创建了一个`List<Order>`,其中`Order`类有两个属性:`id`和`orderNo`。代码如下: ```java List<Order> list = new ArrayList<>(); Order o1 = new Order("1", "MCS-2019-1123"); list.add(o1); Order o2 = new Order("2", "MCS-2019-1124"); list.add(o2); Order o3 = new Order("3", "MCS-2019-1125"); list.add(o3); ``` 接着,我们使用流API的`map`方法来映射每个`Order`对象的`orderNo`属性,并通过`collect`方法收集这些值到一个新的`List<String>`中: ```java List<String> orderNoList = list.stream() .map(Order::getOrderNo) .collect(Collectors.toList()); System.out.println("输出订单号集合:" + orderNoList); ``` 同样,我们可以提取`id`属性: ```java List<String> idList = list.stream() .map(Order::getId) .collect(Collectors.toList()); System.out.println("输出ID集合:" + idList); ``` 执行上述代码,将分别输出订单号和ID的集合: ``` 输出订单号集合:[MCS-2019-1123, MCS-2019-1124, MCS-2019-1125] 输出ID集合:[1, 2, 3] ``` `Order`类的定义如下: ```java public class Order { String id; String orderNo; public Order(String id, String orderNo) { this.id = id; this.orderNo = orderNo; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getOrderNo() { return orderNo; } public void setOrderNo(String orderNo) { this.orderNo = orderNo; } } ``` 在Java8中,`map`方法用于对集合中的每个元素应用一个函数,然后返回一个新的流,包含应用函数后的结果。而`collect`方法用于将流转换为其他形式,如集合、数组等。`Collectors.toList()`则是`collect`方法的一个参数,它会将流中的元素收集到一个`ArrayList`中。 除了这个基本的提取属性值的案例,Java8的流API还提供了多种强大的操作,如过滤(`filter`)、排序(`sorted`)、并行处理(`parallelStream`)等,可以方便地对列表进行筛选、排序等复杂操作,大大简化了集合数据处理的代码。在实际开发中,熟练掌握这些特性能够提高代码的可读性和效率。