«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу эффективно перевести списки на карты с помощью потоков Java 8?

Как я могу эффективно перевести списки на карты с помощью потоков Java 8?

Опубликовано в 2025-02-06
Просматривать:318

How Can I Efficiently Translate Lists to Maps Using Java 8 Streams?

переводы в списки для эффективного отображения с Java 8 Streams

В Java 8 общая задача состоит в том, чтобы преобразовать список объектов в карту, используя потоки и ламбды. Это может быть достигнуто различными способами, в зависимости от желаемого поведения и доступности сторонних библиотек, таких как гуава. Список на карту, включающая ручную итерацию и рукописную цикл:

]

частная карта namemap (list выбор) { окончательная карта hashmap = new HashMap (); для (окончательный выбор выбора: выбор) { hashmap.put (Choice.getName (), выбор); } вернуть HashMap; }

решения на основе гувы

]
private Map nameMap(List choices) {
    final Map hashMap = new HashMap();
    for (final Choice choice : choices) {
        hashMap.put(choice.getName(), choice);
    }

    return hashMap;
}
guava с java 7

private map namemap (list выбор) { return maps.uniquindex (выбор, новая функция () { @Override Public String Apply (Final Choice Input) { return input.getName (); } }); }

]

guava с Java 8 lambdas

Использование Java 8 Lambdas упрощает код еще дальше:

private Map nameMap(List choices) {
    return Maps.uniqueIndex(choices, new Function() {

        @Override
        public String apply(final Choice input) {
            return input.getName();
        }

    });
}

Collectors в Rescue

класс коллекционеров Java 8 предлагает надежную реализацию для списков отображения для карт. Коллекционер Tomap принимает два аргумента:

private Map nameMap(List choices) {
    return Maps.uniqueIndex(choices, Choice::getName);
}
Функция экстрактора ключа (функция, которая получает ключ для каждого элемента)

функция экстрактора значения (функция, которая получает значение для каждого element)

]

В данном случае мы можем использовать выбор :: getName и function.identity () для извлечения ключа и значения соответственно:

    map результат = Выбор. Function.identity ()));
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3