Nano Hash - криптовалюты, майнинг, программирование

Избегайте .stream() и .collect() при использовании лямбда-выражений со старыми классами коллекций в Java 8

Я просто пробую лямбда-выражения в Java 8 и очень разочарован, потому что не могу использовать их, например, на простом List. Вместо этого мне всегда приходится преобразовывать List в Stream, а затем снова преобразовывать через .collect().

Так и должно быть или я что-то не так делаю? Возможно, решение состоит в том, чтобы заменить использование старого доброго Collection на Stream, где это возможно, чтобы .map и .filter можно было использовать более естественно везде. Однако я не уверен, считается ли это хорошей практикой. Я пропустил еще один трюк, чтобы обойти эту проблему?


  • См. здесь. Где-то дубликат... 08.12.2015
  • Вы все еще можете посмотреть на Collection#removeIf / List#replaceAll (с отображением от T до T), если хотите изменить список на месте. Вас также может заинтересовать этот поток: stackoverflow.com/questions/24676877/ 08.12.2015
  • Нет, вы поняли, использование stream() и collect() - это предполагаемый способ. Если вам нужен более гибкий API, выберите альтернативную библиотеку коллекций, например Goldman-Sachs Collections, HPPC и т. д., или просто более мощная библиотека потоковой передачи, например StreamEx. 08.12.2015
  • Все это обсуждается здесь. 08.12.2015
  • Хорошо, спасибо всем. Я думаю, что мой вопрос - это ответ с комбинацией ссылки Sotirios Delimanolis и ответа @Slanec. 08.12.2015

Ответы:


1

forEach определяется непосредственно в List. Но для большинства операций ожидаемое использование выглядит примерно так:

convertedList = myList.stream().filter(...).map(...).collect(Collectors.toList());

поэтому преобразование в поток и из потока довольно плавное.

08.12.2015
  • Хорошо, я думаю, я просто буду использовать больше потоков, где это уместно. 08.12.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..