我正在做我的项目,然后我需要Json数据中的reach an元素看起来像:
[
{
"name": "Meltem",
"items": [
{
"name": "Yilmaz",
"histories": [
{
"date": 1615370705561,
"school": "BAU"
}
]
}
]
}
]
因此,我可以用以下方法访问name元素:
var myData = data().
stream().
filter(x -> x.getName().equals("Meltem"))
.collect(Collectors.toList())
.get(0);
那么,如何在java 8中使用stream()到达学校呢?
还有,我调用的< code>getName();
@Getter
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"name",
"items",
})
public class Package {
@JsonProperty("name")
private String name;
@JsonProperty("items")
private List<Item> items;
}
var myData = data().
stream().
filter(x -> x.getName().equals("Meltem"))
.collect(Collectors.toList())
.get(0).getHistories().get(0).getSchool();
这对你有用吗?
这应该是有效的:
var myData = data.stream()
.filter(x -> x.getName().equals("Meltem"))
.flatMap(x -> x.getItems().stream())
.filter(x -> x.getName().equals("Yilmaz"))
.flatMap(x -> x.getHistories().stream())
.map(History::getSchool)
.collect(Collectors.toList());
假设你的类看起来像这样:
public static class Package {
private String name;
private List<Item> items;
public String getName() {
return name;
}
public List<Item> getItems() {
return items;
}
}
public static class Item {
private String name;
private List<History> histories;
public String getName() {
return name;
}
public List<History> getHistories() {
return histories;
}
}
public static class History {
private String school;
public String getSchool() {
return school;
}
}
flatMap
是您的朋友:
var mySchool = data().
stream()
.filter(x -> x.getName().equals("Meltem"))
.flatMap(x->x.getItems().stream())
.flatMap(item->item.getHistories().stream())
.map(history->history.getSchool())
.collect(Collectors.toList())
.get(0);
我提供的代码为您提供了一个
列表
,其中包含所有历史记录中的所有学校,以及名为 MeItem
的所有包中的所有项目。
如果您只想获取第一个元素,我会使用< code>Stream#findFirst
而不将其转换为< code>List:
var mySchool = data().
stream()
.filter(x -> x.getName().equals("Meltem"))
.flatMap(x->x.getItems().stream())
.flatMap(item->item.getHistories().stream())
.map(history->history.getSchool())
.findFirst()
.orElse(null);//or use the Optional for whatever you want
本文向大家介绍Java8中Lambda表达式使用和Stream API详解,包括了Java8中Lambda表达式使用和Stream API详解的使用技巧和注意事项,需要的朋友参考一下 前言 Java8 的新特性:Lambda表达式、强大的 Stream API、全新时间日期 API、ConcurrentHashMap、MetaSpace。总得来说,Java8 的新特性使 Java 的运行速度更快、
本文向大家介绍java8中Stream的使用示例教程,包括了java8中Stream的使用示例教程的使用技巧和注意事项,需要的朋友参考一下 前言 Java8中提供了Stream对集合操作作出了极大的简化,学习了Stream之后,我们以后不用使用for循环就能对集合作出很好的操作。 本文将给大家详细介绍关于java8 Stream使用的相关内容,下面话不多说了,来一起看看详细的介绍吧 1. 原理 S
我试图列出整数列表中的重复元素,例如, 使用jdk 8的流。有人试过吗?要删除重复项,我们可以使用distinct() api。但是如何找到重复的元素呢?有人能帮我吗?
我有以下几门课: 我有一个物品清单。我想遍历列表并找到具有特定ID的实例。我试着通过溪流来做。
问题内容: 我正在尝试将元素添加到python中的json文件中,但我无法做到这一点。 这是我直到现在尝试的内容(删除了一些变化): 但是,我得到的是: 很好,因为我还需要添加一个新行而不是一个元素,但是我想得到这样的东西: 我应该如何添加新元素? 问题答案: 你可以这样做。
问题内容: 我知道如何从-> “转换”一个简单的Java ,即: 现在,我想对地图进行基本相同的操作,即: 解决方案不应限于-> 。就像上面的示例一样,我想调用任何方法(或构造函数)。 问题答案: 它不如列表代码那么好。您不能在通话中构造new ,因此工作会混入通话中。