将Integer的ArrayList与多个ArrayList进行比较以提取公共值

时间:2018-02-06 13:30:00

标签: java arraylist mapdb

我有一个Integer的ArrayList,从MapDB地图中提取,使用以下代码:

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

这是一份ID列表。 我有来自同一个数据库的另一个ConcurrentNavigableMap,称为拍卖。在这个映射中,每个对象都有一个整数的ArrayList,叫做offId,它有一个唯一的整数列表,每个整数代表一个特定的商品。每一件事,它都会转向该地图的特定对象(拍卖) 在每个offId中都可以(或者不是!)匹配idOffUser的某些元素,所以我需要提取拍卖中的对象,其offId至少与idOffUser的元素匹配,不包括重复项,因为我只需要知道用户在什么拍卖中提出要约,但用户可以在拍卖中放置多个要约 作为这种方法的结果,我需要一个ArrayList与每个拍卖对象,其中用户至少提出要约 到目前为止,我知道我可以通过这种方式访问​​拍卖中的报价广告:

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

1 个答案:

答案 0 :(得分: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());