首页 > 解决方案 > 整数数组的 Java 流以返回对象列表

问题描述

我有以下代码,我相信可以通过减少它的必要性来改进它。

有没有办法通过使用 Java Streams API 来为此重写?

它遍历整数列表,根据项目映射过滤,返回 id 上的匹配项。对我来说棘手的部分是它遍历Integers,但返回一个Items列表。

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;
}

标签: javaarraysjava-stream

解决方案


您可以简单地使用filterand map(这将推断类型)。

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

推荐阅读