powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Найти пересечение и произвести операции над элементами
8 сообщений из 8, страница 1 из 1
Найти пересечение и произвести операции над элементами
    #38709765
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть первая и вторая коллекция элементов. Нужно узнать какие элементы во второй коллекции (относительно первой) новые и каких элементов в ней нет (также относительно первой коллекции). Над новыми и исчезнувшими элементами нужно произвести разные операции. Как красиво можно сделать это? А как будет быстрее?
...
Рейтинг: 0 / 0
Найти пересечение и произвести операции над элементами
    #38709771
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно использовать новые фичи из jdk 8
...
Рейтинг: 0 / 0
Найти пересечение и произвести операции над элементами
    #38709791
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
processNewElements(collection1, collection2, processor::process1);
processNewElements(collection2, collection1, processor::process2);

public void <T> processNewElements(Collection<T> original, Collection<T> newItemSource, Consumer<T> action){
    newItemSource
           .stream()
           .filter(item -> !original.containt(item))
           .forEach(action);
}
...
Рейтинг: 0 / 0
Найти пересечение и произвести операции над элементами
    #38710023
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, довольно очевидная вещь, вот порылся немного на stackoverflow и узнал про Set#removeAll:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
		Set<String> first = new HashSet<String>() {{
			add("1");
			add("2");
		}};
		
		Set<String> second = new HashSet<String>() {{
			add("4");
			add("1");
		}};
		
		Set<String> firstClone = new HashSet<>(first);
		
		first.removeAll(second);
		second.removeAll(firstClone);
		
		
		System.out.println("lost:" + first);
		System.out.println("new:" + second);
---
lost:[2]
new:[4]



По хорошему должно быть шустрее
...
Рейтинг: 0 / 0
Найти пересечение и произвести операции над элементами
    #38710027
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FororBlazkowicz, довольно очевидная вещь, вот порылся немного на stackoverflow и узнал про Set#removeAll:
Во-первых Collection.removeAll(), во-вторых стыдно не знать Collection Framework.

FororПо хорошему должно быть шустрее
Сильно сомневаюсь.
...
Рейтинг: 0 / 0
Найти пересечение и произвести операции над элементами
    #38710030
Foror
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хотя смотрю в исходники AbstractSet и мне не очень нравится тело метода removeAll )
...
Рейтинг: 0 / 0
Найти пересечение и произвести операции над элементами
    #38710054
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Fororхотя смотрю в исходники AbstractSet и мне не очень нравится тело метода removeAll )
В техническом форуме не стоит использовать такие слова как нра.. не нра.. без аргументаций.
...
Рейтинг: 0 / 0
Найти пересечение и произвести операции над элементами
    #38715574
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у guava есть отличные методы борьбы с коллекциями
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Найти пересечение и произвести операции над элементами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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