首页 > 解决方案 > 如何将一个字符串映射到流中的另一个字符串?

问题描述

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

这是我的清单:

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); 

这对于 (..) 是必需的。

标签: javalistdictionaryfilterjava-stream

解决方案


您可以使用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());

推荐阅读