返回对象列表的整数数组的java流

o2gm4chl  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(267)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

上个月关门了。
改进这个问题
我有下面的代码,我相信可以通过减少它的必要性来改进。
有没有一种方法可以通过使用javastreamsapi来重新编写呢?
它遍历整数列表,根据项目Map进行过滤,返回id上的匹配项。对我来说,棘手的是它遍历整数,但返回项目列表。

private  Map<Integer,Thing> thingMap = new HashMap<Integer,Thing>();
// populate thingMap
//...

public List<Item> getItems(Integer[] item_ids) {
    if(item_ids == null || item_ids.length ==0){
        return null;
    }
    List<Item> items = new ArrayList<Item>();
    for(Integer item_id : item_ids){
        Item d = itemMap.get(item_id);
        if( d !=null){
            items.add(d);
        }
    }
    return items;
}
bq3bfh9z

bq3bfh9z1#

你可以简单地使用 filter 以及 map (这将推断类型)。

return Arrays.stream(item_ids)
    .filter(itemMap::containsKey)
    .map(itemMap::get)
    .collect(Collectors.toList());
vqlkdk9b

vqlkdk9b2#

也可以使用,

List<String> collect = Arrays.stream(item_ids)
                                     .map(itemMap::get)
                                     .filter(Objects::nonNull)
                                     .collect(Collectors.toList());

相关问题