Сравнение ArrayList из Integer с несколькими ArrayList для извлечения общих значений

У меня есть один ArrayList из Integer, извлеченный из карты MapDB, с этим кодом:

ArrayList<Integer> idOffUser=users.get(myUser).getOffers();

Это список идентификаторов. У меня есть еще одна ConcurrentNavigableMap из того же БД, называемая аукционами. В этой карте для каждого объекта, который содержит, у меня есть ArrayList из Integer, называемый offId, который содержит список уникальных целых чисел, каждое из которых представляет конкретное предложение. Каждый offId ссылается на конкретный объект (аукцион) этой карты.
В каждом offId может быть (или нет!) Совпадение для некоторых элементов idOffUser, поэтому мне нужно извлечь объекты на аукционах, у которых offId хотя бы совпадает с элементом idOffUser, исключая дубликаты, потому что мне нужно только знать, на каком аукционе пользователь выставляет предложение, но пользователь может выставить несколько предложений на аукцион.
В результате этого метода мне нужно иметь ArrayList с каждым объектом аукциона, в который пользователь помещает хотя бы предложение.
Пока я знаю, что могу получить доступ к списку предложений на аукционах следующим образом:

for (Auction key : auctions.values())
key.getOffId();  

1 ответ

Что-то вроде этого должно сделать свое дело:

Set<Integer> uniqueIds = new HashSet<>();
for (Auction key : auctions.values())
    uniqueIds.addAll(key.getOffId()); 
List<Integer> idsOfUsersWithAuctions = idOffUser.stream().filter(id -> uniqueIds.contains(id)).collect(Collectors.toList());
Другие вопросы по тегам