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

Как эффективно отменить поток Java 8?

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

How to Reverse a Java 8 Stream Efficiently?

в Java 8, потоки обеспечивают мощный и краткий способ манипулировать и обработать данные. Одной из общих операций является обращение поток. В этой статье рассматриваются два метода достижения этого: конкретное решение для реверсирования Intstream и общего подхода для изменения любого потока объектов. Intstream, может быть создан пользовательский метод, чтобы отобразить диапазон значений в обратном порядке. Например, если у нас есть Intstream в диапазоне от -5 до 0, это обратное, это приведет к потоку от 0 до -5. Это может быть достигнуто с помощью следующего кода:

static intstream revrange (int от, int to) { вернуть intstream.range (от, до) .map (i -> to - i от - 1); }

этот метод избегает бокса и сортировки, что приводит к более эффективному решению.

generic потоковой реверсии

static IntStream revRange(int from, int to) {
    return IntStream.range(from, to)
                    .map(i -> to - i   from - 1);
}
для реверсирования потоков любого типа объекта, Можно использовать два подхода. Первый включает в себя хранение элементов потока в массиве и чтение их в обратном порядке:

@Puppresswarnings ("uncecked") static Stream reverse (stream input) { Object [] temp = input.toarray (); return (stream ) intstream.range (0, temp.length) .maptoobj (i -> temp [temp.length - i - 1]); }

] Этот подход прост, но требует создания промежуточного массива. > input = ...;; Список output = input.collect (Arraylist :: new, (List, e) -> list.add (0, e), (List1, list2) -> list1.addall (0, list2));

. Этот параметр также требует хранения элементов потока, но он устраняет необходимость копирования с помощью ArrayList с вставкой на передней части.

стоит отметить, что нет «правильного» способа обратить вспять поток без хранения элементов. Тем не менее, представленные методы обеспечивают эффективные и универсальные решения как для конкретного изменения Intstream, так и для общего реверса потока.
]
Последний учебник Более>

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

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

Copyright© 2022 湘ICP备2022001581号-3