资源说明: JDK8 通过 Stream 对 List、Map 操作和互转的实现
JDK8 中的 Stream API 是一个非常强大的工具,它可以帮助开发者快速、简洁地进行数据处理。在实际开发中,我们经常需要将 List 转换为 Map,或者将 Map 转换为 List。今天,我们将详细介绍如何使用 Stream API 实现这些操作。
Map 转换为 List
在实际开发中,我们经常需要将 Map 转换为 List,例如将 Map 中的 Key-Value 对转换为一个 List 对象。在 JDK8 中,我们可以使用 Stream API 來实现这种操作。
List list = map.entrySet().stream()
.sorted(Comparator.comparing(e -> e.getKey()))
.map(e -> new Person(e.getKey(), e.getValue()))
.collect(Collectors.toList());
在上面的代码中,我们首先将 Map 转换为一个 Stream,然后使用 sorted() 方法对 Key 进行排序,接着使用 map() 方法将每个 Entry 转换为一个 Person 对象,最后使用 collect() 方法将 Stream 转换为一个 List 对象。
List 转换为其他 List
在实际开发中,我们经常需要将一个 List 转换为另一个 List,例如将一个 List 对象转换为另一个 List 对象。在 JDK8 中,我们可以使用 Stream API 来实现这种操作。
List employees = persons.stream()
.filter(p -> p.getLastName().equals("l1"))
.map(p -> new Employee(p.getName(), p.getLastName(), 1000))
.collect(Collectors.toList());
在上面的代码中,我们首先将 List 转换为一个 Stream,然后使用 filter() 方法过滤出符合条件的对象,接着使用 map() 方法将每个对象转换为一个 Employee 对象,最后使用 collect() 方法将 Stream 转换为一个 List 对象。
从 List 中过滤出一个元素
在实际开发中,我们经常需要从一个 List 中过滤出一个元素,例如根据某个条件从 List 中找到一个对象。在 JDK8 中,我们可以使用 Stream API 来实现这种操作。
User match = users.stream()
.filter((user) -> user.getId() == 1)
.findAny()
.get();
在上面的代码中,我们首先将 List 转换为一个 Stream,然后使用 filter() 方法过滤出符合条件的对象,接着使用 findAny() 方法找到第一个符合条件的对象,最后使用 get() 方法将其转换为一个对象。
List 转换为 Map
在实际开发中,我们经常需要将一个 List 转换为一个 Map,例如将一个 List 对象转换为一个 Map 对象。在 JDK8 中,我们可以使用 Stream API 来实现这种操作。
public class Hosting {
private int Id;
private String name;
private long websites;
public Hosting(int id, String name, long websites) {
Id = id;
this.name = name;
this.websites = websites;
}
// getters, setters and toString()
}
Map result1 = list.stream()
.collect(Collectors.toMap(Hosting::getId, Hosting::getName));
在上面的代码中,我们首先将 List 转换为一个 Stream,然后使用 collect() 方法将其转换为一个 Map 对象。在 collect() 方法中,我们使用 Collectors.toMap() 方法将每个对象转换为一个 Map.Entry 对象,然后将其转换为一个 Map 对象。
我们可以使用 Stream API 来实现各种 List 和 Map 之间的操作,例如将 Map 转换为 List,List 转换为其他 List,从 List 中过滤出一个元素,或者将 List 转换为 Map。这些操作可以简洁、快速地实现数据处理。
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。