powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / удалить их ArrayList
17 сообщений из 42, страница 2 из 2
удалить их ArrayList
    #39560823
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Cамое быстрое O(n)

https://codereview.stackexchange.com/questions/64011/removing-elements-on-a-list-while-iterating-through-it

ну или параллелизм исходной коллекции потом сливать .

Нужно через jmh : но можно и так

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class StreamRemove {

    public static void main(String[] args) {

        List<Integer> nums = new ArrayList();
        for (int i = 1; i < 10_000_000; i++) {
            nums.add(i);

        }

        List<Integer> filteredList;

        long start = System.currentTimeMillis();
        filteredList = nums.stream().filter(i -> i >= 3).collect(Collectors.toList());
        System.out.println(filteredList.size());
        long stop = System.currentTimeMillis();
        System.out.println((stop - start) + " ms stream");

        start = System.currentTimeMillis();
        filteredList = nums.stream().filter(i -> i >= 3).collect(Collectors.toList());
        System.out.println(filteredList.size());
        stop = System.currentTimeMillis();
        System.out.println((stop - start) + " ms stream");

        start = System.currentTimeMillis();
        filteredList = nums.parallelStream().filter(i -> i >= 3).collect(Collectors.toList());
        stop = System.currentTimeMillis();
        System.out.println(filteredList.size());

        System.out.println((stop - start) + " ms parallelStream");

        start = System.currentTimeMillis();
        filteredList = nums.parallelStream().filter(i -> i >= 3).collect(Collectors.toList());
        stop = System.currentTimeMillis();
        System.out.println(filteredList.size());

        System.out.println((stop - start) + " ms parallelStream");

    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9999997
2219 ms stream
9999997
548 ms stream
9999997
508 ms parallelStream
9999997
291 ms parallelStream
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560832
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Cамое быстрое O(n)

https://codereview.stackexchange.com/questions/64011/removing-elements-on-a-list-while-iterating-through-it

ну или параллелизм исходной коллекции потом сливать .аналогичные наборы видел, их полно.
хотелось читабельность как у стрима, а быстродействие как у iterator, но
BlazkowiczБайты из InputStream пробовал когда-нибудь удалять?
всё объясняет.
создание новой переменной - однозначно не канает.
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560848
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяхотелось читабельность как у стрима, а быстродействие как у iterator,у ООП есть.
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560860
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123у ООП есть.это отдельная тема для отдельного флуда.
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560899
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman ,
так проще
Код: java
1.
2.
3.
4.
5.
6.
Iterator<ListUsers> it = LU.iterator();
while (it.hasNext()) {
	if (it.next().Role.equals(role)) {
		it.remove();
	}
}
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560916
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяPetro123у ООП есть.это отдельная тема для отдельного флуда.
Так не задавай вопрос, почему цикл быстрее.
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560995
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадятак прощееще проще:
Код: java
1.
for (Iterator<ListUsers> it = LU.iterator(); it.hasNext() && it.next().Role.equals(role); it.remove());
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39561000
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,
тогда уже так, чтоб по правилам
Код: java
1.
2.
for (Iterator<ListUsers> it = LU.iterator(); it.hasNext() && it.next().Role.equals(role); it.remove()) {
 }
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39561003
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

не, я ошибся в условии... ((
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39561005
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
хорошо показано что такое стрим
особенно аналогия с трубами понравилась :)

Atum1 ,
спасибо за пример с результатами, хорошая демонстрация по разности в скорости
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39561006
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usmanне, я ошибся в условии... ((у меня ide ругалась на отсутствие {}.
а так всё работает
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39561007
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяUsmanне, я ошибся в условии... ((у меня ide ругалась на отсутствие {}.
а так всё работаетесли для полной очистки то вариант работает , если для частичной - то фигвам
да условие не правильное
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39562330
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
небольшое сравнение( LU - 10 значений )
вариант А
Код: java
1.
2.
3.
4.
5.
6.
7.
Iterator<ListUsers> it = LU.iterator();
                ListUsers tt;
                while (it.hasNext()) {
                    tt = it.next();
                    if (tt.Role.equals("ass")) {
                    }
                }


вариант В
Код: java
1.
2.
   LU.stream().filter((name) -> name.Role.equals("ass")).forEach(b -> {
                });


разница в скорости до 10 раз.
если применить вариант С
Код: java
1.
2.
   LU.parallelStream().filter((name) -> name.Role.equals("ass")).forEach(b -> {
                });


то разница в скорости достигает до 100 раз
.....
красота требует жертв :(
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39562331
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В=А*10
С=А*100
примерные границы по времени выполнения
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39562352
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадякрасота требует жертв :(
Ты опять про архитектуру?
Красота это не 1 строчка против 5-ти.
Это использование кода/метода/инструмента по месту.
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39562380
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Ты опять про архитектуру?
Красота это не 1 строчка против 5-ти.
Это использование кода/метода/инструмента по месту.ты юмора не понял?
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39562418
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
Там смайлик не на юмор).
...
Рейтинг: 0 / 0
17 сообщений из 42, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / удалить их ArrayList
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]