【问题标题】:How to map one string into another in stream?如何将一个字符串映射到流中的另一个字符串?
【发布时间】:2019-08-01 03:26:52
【问题描述】:

我在返回以下流内字符串时遇到了一个大问题。你会帮忙吗?

这是我的清单:

List<String> dest = Arrays.asList(
  "bleble bleble 2000",
  "WAW HAV 1200",
  "xxx yyy 789",
  "WAW DPS 2000",
  "WAW HKT 1000"
);

我怎样才能返回这样的字符串: //to HKT - price in EUR: 4300 //to HAV - price in EUR: 5160 //to DPS - price in EUR: 8600

正在直播中?

enter codedouble ratePLNvsEUR = 4.30;
List<String> result = dest
    .stream()
    .filter(x -> x.startsWith("WAW"))
    //.map() <- how to change "WAW HAV 1200" into "HAV - price in EUR:  5160"
    .collect(Collectors.toList());

for (String r : result) System.out.println(r); 

这个 for (..) 是必需的。

【问题讨论】:

  • 你想做什么?

标签: java list dictionary filter java-stream


【解决方案1】:

您可以使用map() 来拆分字符串,并获取所需的元素(第二个和第三个):

List<String> result = dest
        .stream()
        .filter(x -> x.startsWith("WAW"))
        .map(x -> {
            String[] row = x.split(" ");

            return String.format("to %s - price in EUR:    %s",
                    row[1],
                    Integer.parseInt(row[2]) * ratePLNvsEUR);
        })
        .collect(Collectors.toList());

【讨论】:

  • map(s-&gt;split(" ")).map(arr-&gt;String.format("to %s - price in EUR: %s", row[1], Integer.parseInt(row[2]) * ratePLNvsEUR))
  • * 我在之前的评论中犯了简单的复制粘贴错误。取而代之的是arr,它应该是row,因为这就是format 中引用数组的方式。
猜你喜欢
  • 1970-01-01
  • 2013-09-26
  • 2017-08-10
  • 1970-01-01
  • 2020-04-13
  • 1970-01-01
  • 2021-10-17
  • 2012-09-25
相关资源
最近更新 更多