Преобразовать строку с разделителями в список <String>в список <String> - PullRequest
0 голосов
/ 04 марта 2020

Предположим, у нас есть List<String> с некоторыми значениями, содержащими разделитель ,, как мы можем преобразовать разделение и объединить в List<String> без разделителя ,?

Input : [ "1,2", "3,4", "5" ]

Выход : [ "1", "2", "3", "4", "5" ]


Код императива

List<String> input = Arrays.asList("1,2", "3,4", "5");
List<String> output = new ArrayList<>();
for (String str : input) {
  for (String split : str.split(",")) {
    output.add(split);
  }
}

Ответы [ 2 ]

5 голосов
/ 04 марта 2020

Вы можете сделать это с помощью Stream s:

List<String> output = input.stream()
                           .flatMap(s -> Arrays.stream(s.split(",")))
                           .collect(Collectors.toList());

Например,

List<String> input = Arrays.asList("1,2", "3,4", "5" );
List<String> output = input.stream()
                           .flatMap(s -> Arrays.stream(s.split(",")))
                           .collect(Collectors.toList());
System.out.println (output);

выведет

[1, 2, 3, 4, 5]
1 голос
/ 04 марта 2020

Вы можете сделать это следующим образом:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> list = List.of("1,2", "3,4", "5");
        List<String> newList = new ArrayList<String>();
        list.forEach(s -> Arrays.stream(s.split(",")).forEach(newList::add));
        System.out.println(newList);
    }
}

Вывод:

[1, 2, 3, 4, 5]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...