Как отобразить одну строку в другую в потоке? - PullRequest
1 голос
/ 10 марта 2019

У меня большая проблема с возвратом следующих строк в потоке. Ты поможешь?

Вот мой список:

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

Требуется для (..).

1 Ответ

2 голосов
/ 10 марта 2019

Вы можете использовать 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());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...