Java8:从List中提取属性值的实战教程
版权申诉
5星 · 超过95%的资源 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`)等,可以方便地对列表进行筛选、排序等复杂操作,大大简化了集合数据处理的代码。在实际开发中,熟练掌握这些特性能够提高代码的可读性和效率。
2020-08-18 上传
2023-06-01 上传
2023-06-01 上传
2023-06-01 上传
2023-02-16 上传
2024-09-13 上传
2023-06-08 上传
weixin_38666114
- 粉丝: 7
- 资源: 971
最新资源
- 全国江河水系图层shp文件包下载
- 点云二值化测试数据集的详细解读
- JDiskCat:跨平台开源磁盘目录工具
- 加密FS模块:实现动态文件加密的Node.js包
- 宠物小精灵记忆配对游戏:强化你的命名记忆
- React入门教程:创建React应用与脚本使用指南
- Linux和Unix文件标记解决方案:贝岭的matlab代码
- Unity射击游戏UI套件:支持C#与多种屏幕布局
- MapboxGL Draw自定义模式:高效切割多边形方法
- C语言课程设计:计算机程序编辑语言的应用与优势
- 吴恩达课程手写实现Python优化器和网络模型
- PFT_2019项目:ft_printf测试器的新版测试规范
- MySQL数据库备份Shell脚本使用指南
- Ohbug扩展实现屏幕录像功能
- Ember CLI 插件:ember-cli-i18n-lazy-lookup 实现高效国际化
- Wireshark网络调试工具:中文支持的网口发包与分析