Использование потоков, как заменить значение вложенного списка - PullRequest
0 голосов
/ 27 сентября 2018

Первая половина строк, встречающихся во входах в позиции индекса 1, должна быть заменена символом «-» с использованием потоков, как мы можем выполнять операции?

List<List<String>> arr = Arrays.asList(Arrays.asList("0", "ab"), Arrays.asList("6", "cd"),
    Arrays.asList("0", "ef"), Arrays.asList("6", "gh"),
    Arrays.asList("4", "ij"), Arrays.asList("0", "ab"),
    Arrays.asList("6", "cd"));

У меня есть приведенный выше списокЯ хотел заменить первую позицию каждого вложенного списка в «-», используя циклы, которые я сделал следующим образом

    int j=0;
    while(j <arr.size()/2){
        arr.get(j).set(1, "-");
        j++;

        }

Пример вывода: [[0, -], [6, -], [0,-], [6, gh], [4, ij], [0, ab], [6, cd]]

Но любой может объяснить, как этого можно добиться с помощью потоков

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Я бы не использовал Stream для этого, работа с подсписком была бы проще:

arr.subList(0, arr.size() / 2).forEach(s -> s.set(1, "-"));

Если вам действительно нужно работать с потоками (например, если вы хотите сделать дополнительную фильтрацию)и операции отображения), вы можете сделать это либо с IntStream для работы с индексами:

IntStream.range(0, arr.size() / 2)
        .forEach(j -> arr.get(j).set(1, "-"));

, либо просто ограничив число обрабатываемых записей:

arr.stream()
        .limit(arr.size() / 2)
        .forEach(s -> s.set(1, "-"));
0 голосов
/ 27 сентября 2018

Вопрос неопределенный.Лучше указать формат вывода, чтобы кто-то мог понять, что вам нужно, и помочь вам.Однако, исходя из некоторых предположений и эвристики, я думаю, это то, что вам нужно.Если вы хотите другое форматирование, пожалуйста, дайте мне знать или измените этот ответ соответственно.

Еще один момент - то, что вы пробовали, пока неясно.Вы должны попробовать его заранее и упомянуть, что вы сделали, когда вопрос опубликован.

List<List<String>> formattedStrings = source.stream()
    .map(sl -> IntStream.range(0, sl.size())
        .mapToObj(i -> i == 1 ? sl.get(i).charAt(0) + "-" + sl.get(i).charAt(1) : sl.get(i))
            .collect(Collectors.toList()))
    .collect(Collectors.toList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...