【发布时间】:2023-01-25 17:57:10
【问题描述】:
我有一个电子邮件对象列表,每个对象都包含一个枚举类型状态。我需要按活动和已验证状态过滤列表,并返回电子邮件地址(字符串),否则为空。你能帮我提供使用流的解决方案吗?
List<Email> emails -> enum StatusEnum { ACTIVE("ACTIVE"), VERIFIED("VERIFIED") ..} & emailaddress.
我的条件是 stat = active && 已验证,并从电子邮件对象列表中返回 testmail@test.com。谢谢。
Json格式的例子:
{
"emails": [
{
"stat": [
"active",
"verified"
],
"date": "2022-06-03",
"emailaddress": "testmail@test.com"
}
]
}
【问题讨论】:
-
你尝试过什么吗?如果超过 1 个电子邮件匹配,返回所有,只获取其中一个地址,还会发生什么情况?
-
它总是返回一封电子邮件。我需要这样的东西。字符串电子邮件 = mail.getEmails().stream().filter(obj -> obj.getStatus().containsAll(Arrays.asList("active","verified"))).findAny().orElse(null)
-
看起来你只是缺少一个映射函数来提取地址,在
orElse()-Optional.map()之前。
标签: java java-stream