java - 如何解决 java8 流映射中的特殊情况
问题描述
我有一Question
堂课如下:
public class Question {
private String name;
private String type;
private boolean isAdded;
...
getters and setters
}
我想要一个问题列表中的所有问题,其 isAdded=true 附加 ':' 并且如果问题名称是特殊的,而不是这种情况下的特殊类型值。
最终的字符串应如下所示:
questionname1:questionname2:Special-type value:questionname4
我已经写了:
List<String> slist = questionList.stream().filter(q -> q.isAdded() == true).map(name-> name.getName()).collect(Collectors.toList());
String final = String.join(":", slist);
我得到所有字符串名称附加:但如果问题名称是特殊的,则不获取类型值。
请让我知道应该进行哪些更改。
解决方案
这应该工作
list.stream()
.filter(Question::isAdded)
.map(item-> item.getName().equals("Special") ? item.getType() : item.getName())
.collect(Collectors.joining(":"))
推荐阅读
- algorithm - 斐波那契数的幂的总和?
- django - Selenium 已停止工作,chrome 版本不匹配
- ios - 如何在 iOS 中将堆栈视图中的第一个视图置于最前面?
- regex - 为什么我的 DOB 正则表达式不被接受?
- ios - 添加到子视图的 UIbutton 使应用程序迅速崩溃
- angular - 如何根据 mat-select 中选择的值更改日期选择器掩码
- go - 如何执行命令行
- pandas - Python - 由于在转换中捕获了标头,因此无法将字符串转换为浮点数
- javascript - 计算处理组合javascript的时间
- mysql - 在 BigQuery 中追加时忽略重复记录