Какой самый быстрый способ создать новую коллекцию, которая содержит содержимое другой коллекции плюс еще один элемент - PullRequest
0 голосов
/ 05 июля 2018

Для Java 7/8:

Если у меня есть две коллекции, a и b, где обе являются коллекциями строк, я надеюсь найти наиболее эффективный по времени способ создания новой коллекции для каждого элемента в b, который будет содержать все элементы в плюс текущий элемент в б.

Пример ввода:

a = [a,b,c,d]
b = [e,f,g]

Пример вывода:

[
    [a,b,c,d,e],
    [a,b,c,d,f],
    [a,b,c,d,g]
]

Я понимаю, как сделать это с потоками и сбором, и я знаю, как сделать это с помощью цикла for и создания коллекций, но я хочу знать, есть ли более быстрый способ сделать это. Я разработал логику, и сейчас я пытаюсь оптимизировать скорость , потому что она нам действительно нужна !

1 Ответ

0 голосов
/ 05 июля 2018

Вы можете использовать потоки для решения этой проблемы, собирая List<List<Integer>>.

Вот возможное решение:

public static void main(String[] args) {
    List<Integer> a = Arrays.asList(1, 2);
    List<Integer> b = Arrays.asList(3, 4);
    List<List<Integer>> collect = b.stream().map(e -> Stream.concat(a.stream(), Stream.of(e)).collect(Collectors.toList()))
            .collect(Collectors.toList());
    System.out.println(collect);
}

Это распечатает:

[[1, 2, 3], [1, 2, 4]]

Преимущество использования потоков состоит в том, что вы можете легко распараллелить его, и это может повысить вашу производительность в случае больших наборов данных.

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