Java 8 Stream API 操作List详解:提取属性、转换与排序
需积分: 5 18 浏览量
更新于2024-08-03
收藏 321KB PDF 举报
"Java 8 引入了 Stream API,为集合处理提供了强大的新功能,使得数据处理更加高效和简洁。Stream API支持串行和并行操作,与Lambda表达式结合,极大地提升了代码的可读性和执行效率。本文将总结在处理list时常用的Stream API操作方法。"
1. 取出某一属性
当需要从list中提取每个元素的特定属性时,可以使用 `map` 操作。例如,如果list中包含User对象,且User有一个名为`getName`的方法,可以使用以下代码将所有User的名字提取到一个新的list中:
```java
List<User> userList = ...;
List<String> names = userList.stream()
.map(User::getName)
.collect(Collectors.toList());
```
2. 复制list内容
要将一个list的内容复制到另一个list,可以使用 `addAll` 方法:
```java
List<String> mListStub = new ArrayList<>();
List<String> list = ...;
mListStub.addAll(list);
```
3. list转换成数组
将list转换为数组,首先需要创建一个与list大小相等的数组,然后使用 `toArray` 方法:
```java
ArrayList<String> list = new ArrayList<>();
String[] strings = new String[list.size()];
list.toArray(strings);
```
4. 数组转换成list
反之,将数组转换为list,可以使用 `Arrays.asList`:
```java
String[] s = {"a", "b", "c"};
List<String> list = Arrays.asList(s);
```
5. list转化为map
如果list中的元素是具有唯一标识的对象,可以通过 `Collectors.toMap` 创建一个映射:
```java
List<User> userList = ...;
Map<Long, User> map = userList.stream()
.collect(Collectors.toMap(User::getId, user -> user));
```
这里假设User有一个`getId`方法返回其唯一的标识。
6. list根据实体类某个属性排序
对list按照实体类的一个属性进行升序或降序排列,可以使用 `sorted` 方法配合比较器。例如,对于一个包含Mission对象的list,按照`missId`排序:
```java
class Mission {
int missId;
String name;
// getters and setters...
public static Comparator<Mission> byMissId() {
return (o1, o2) -> o1.getMissId() - o2.getMissId();
}
}
List<Mission> missions = ...;
List<Mission> sortedMissions = missions.stream()
.sorted(Mission.byMissId())
.collect(Collectors.toList());
```
若要降序排序,只需在比较器中交换 `o1` 和 `o2` 的位置。
以上是Java 8 Stream API在处理list时的一些常用操作。通过这些方法,开发者可以更有效地处理大量数据,简化代码,并提高程序的执行效率。Stream API的并行处理能力也能充分利用多核处理器的优势,实现更高效的并发操作。
2023-08-16 上传
2022-07-12 上传
点击了解资源详情
2023-09-13 上传
2020-09-02 上传
2021-06-04 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
xuxu1116
- 粉丝: 2w+
- 资源: 71
最新资源
- Struts入门--按步骤一步步来就可以了
- 超图2000 说明书
- java笔试题(值得一看)
- C语言常用语法表.doc
- c语言堆和链表.doc
- CoreJava笔记
- ModBus协议(中文pdf文件)
- 基于空域LSB的数字图像加密算法
- Eclipse中文教程
- 关于char (*p)[] 和char p[]的问题
- 《JavaScript语言精髓与编程实践》精选版--动态函数式语言精粹
- RCP程序设计 pdf电子书
- intouch用户说明
- Algorithms in C++, Parts 1-4 (code)
- 敏捷开发:Development Build Grid
- 敏捷开发:电信领域敏捷开发经验分享