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

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class ListUsers {

    public String UserLogin;
    public Object Role;

    public ListUsers(String UserLogin,Object Role) {
        this.UserLogin = UserLogin;
        this.Role = Role;
    }

}


Код: java
1.
public static ArrayList<ListUsers> LU;


из LU надо удалить набор
Код: java
1.
LU.stream().filter(s -> s.Role.equals(role)).....


используя stream как ?
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560328
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
удалить ИЗ ArrayList
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560377
mrWolf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А removeIf() чем не устроил?
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560437
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mrWolfА removeIf() чем не устроил?устроил, только остался вопрос скорости...
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560446
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяустроил, только остался вопрос скорости...
Ну, так быстрее создать новый, чем удалять.
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560462
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczНу, так быстрее создать новый, чем удалять.и насколько?
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560577
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяиспользуя stream как ?filter, но быстрее через iterator (имхо)
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560641
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usmanfilter,что-то у меня не срослось с ним - покажи.

Usmanбыстрее через iterator (имхо)покажи быстрый вариант.


проверю на одних данных
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560651
13-й Пилигрим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
java code conventions ? Инкапсуляция? Не... Не слышал.
вадяUsmanfilter,что-то у меня не срослось с ним - покажи.
Код: java
1.
List<ListUsers> newLU = LU.stream().filter(s -> s.Role.equals(role)).collect(Collectors.toList())
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560682
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
List<ListUsers> newLU = LU.stream().filter(s -> s.Role.equals(role)).collect(Collectors.toList())


не подходит
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560684
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13-й Пилигрим,
создание новой переменной не вариант.
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560690
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

Код: java
1.
2.
3.
4.
5.
6.
7.
Iterator<ListUsers> it = LU.iterator();
while (it.hasNext()) {
	ListUsers lu = it.next();
	if (...) {
		it.remove();
	}
}
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560726
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,
действительно , в среднем от 2 до 3 раз быстрее это на 10 записях...
за счёт чего?
и почему рекламируют stream тогда?
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560730
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяи почему рекламируют stream тогда?ошибся :) stream тут не приделах
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560732
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяза счёт чего?эффект почти такой же, как при обращении к списку через Си-шный указатель
вадяи почему рекламируют stream тогда?см. LINQ
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560737
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяи почему рекламируют stream тогда?
Вот прям "рекламируют"? Посмотри хотя бы вводные доклады по стримам на ютубе.
- На данный момент стримы таки медленнее циклов и будет ли решение этой проблемы в ближайшей пятилетке не известно.
- Стримы, как и многое другое, надо понимать. Они не являются серебряной пулей. Можно легко написать какую-то не эффективную ерунду.

Основное же преимущество стримов в читаемости. Опять, же если готовить правильно, а пихать толстые лямбды где попало в нарушении инкапсуляции.
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560749
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПосмотри хотя бы вводные доклады по стримам на ютубе.пока искал в инете как удалить - только описание как работать с ними, насчет медленности - ни одного упоминания, поэтому и вывод/вопрос такой...
странно - новое и вдруг медленнее старого, читабельность - да. но жаль что такое проигрывает в скорости....
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560760
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяпока искал в инете как удалить - только описание как работать с ними
"стримы" и "удалить" это немного из разной оперы.

вадянасчет медленности - ни одного упоминания, поэтому и вывод/вопрос такой...

https://jug.ru/2014/09/сергей-куксенко-stream-api/
YouTube Video
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560765
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну removeIf() это не stream.
удалял так.
Код: java
1.
LU.removeIf(s -> s.Role.equals(role))



для сравнения хочется проверит со stream, но не смог понять как это сделать
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560768
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяну removeIf() это не stream.
удалял так.
Код: java
1.
LU.removeIf(s -> s.Role.equals(role))



для сравнения хочется проверит со stream, но не смог понять как это сделать

Stream это поток данных, а не контейнер. Поэтому удаление к нему не применимо.
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560769
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz"стримы" и "удалить" это немного из разной оперы.фильтрация есть, а удаление отфильтрованного?
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560772
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяфильтрация есть, а удаление отфильтрованного?
Байты из InputStream пробовал когда-нибудь удалять?
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560782
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczБайты из InputStream пробовал когда-нибудь удалять?теперь логика стрима понятна :)
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560816
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cамое быстрое O(n)

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

ну или параллелизм исходной коллекции потом сливать .
...
Рейтинг: 0 / 0
удалить их ArrayList
    #39560822
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Cамое быстрое O(n)
Не понял к чему это ты. O(n) это операция удаления в массиве. Соответственно удаление в цикле это O(n 2 )
С другой стороны это только теория, так как на практике операции с массивом оптимизированы на уровне железа. Что даёт отличный буст в реальной производительности.

Atum1 ну или параллелизм исходной коллекции потом сливать .
Самое "быстрое" это создать новую коллекцию из нужных элементов.
...
Рейтинг: 0 / 0
удалить их 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
42 сообщений из 42, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / удалить их ArrayList
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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