Модификация списков строк внутри списка с использованием потоков Java 8 - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь изменить строки, которые хранятся в ArrayList.Это не только печать измененного списка.После усечения список будет перенесен в систему.

Решение, с которым я столкнулся, работает, но мне интересно, использую ли я весь потенциал потоков Java 8.

Работа(но далеко не идеально) решение:

import static java.util.stream.Collectors.toList;

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

public class Main {

    public static void main(String[] args) {

        ArrayList<List<String>> listOfListsOfStrings = new ArrayList<>();
        listOfListsOfStrings.add(Arrays.asList("abc ", "bd ", " asd ", "s"));
        listOfListsOfStrings.add(Arrays.asList("123 ", "45 ", " 753 ", "111"));
        listOfListsOfStrings.add(Arrays.asList("sdfg2 ", "b23d ", " as123d ", "1s1"));

        ArrayList<List<String>> newListOfLists = new ArrayList<>();
        for (List<String> listOfStrings : listOfListsOfStrings) {
            List<String> newList = listOfStrings.stream().map(String::trim).collect(toList());
            newListOfLists.add(newList);
        }

        listOfListsOfStrings.forEach(list -> list.forEach(System.out::println));
        System.out.println("------------------");
        newListOfLists.forEach(list -> list.forEach(System.out::println));

    }
}

1 Ответ

0 голосов
/ 19 февраля 2019

Я думаю, что вы после этого:

    ArrayList<List<String>> newListOfLists = listOfListsOfStrings.stream()
            .map(list -> list.stream()
                    .map(String::trim)
                    .collect(Collectors.toList()))
            .collect(Collectors.toCollection(ArrayList::new));

Я предполагаю, что вам не разрешено изменять исходный список списков.Если бы вы были, вы могли бы получить свой однострочник (даже без использования потокового API):

    listOfListsOfStrings.forEach(list -> list.replaceAll(String::trim));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...