首页 > 解决方案 > 如何解决 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);

我得到所有字符串名称附加:但如果问题名称是特殊的,则不获取类型值。

请让我知道应该进行哪些更改。

标签: javajava-8java-stream

解决方案


这应该工作

  list.stream()
      .filter(Question::isAdded)
      .map(item-> item.getName().equals("Special") ? item.getType() : item.getName())
      .collect(Collectors.joining(":"))

推荐阅读