java - 整数数组的 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;
}
解决方案
您可以简单地使用filter
and map
(这将推断类型)。
return Arrays.stream(item_ids)
.filter(itemMap::containsKey)
.map(itemMap::get)
.collect(Collectors.toList());
推荐阅读
- php - Redirect Web page does not work in server
- elasticsearch - Elasticserarch How to tokenize on whitespace and special word
- mongodb - MongoDB Upsert 插入数组而不创建单独的文档?
- python - 这是创建 PyTorch 标量的方法吗?
- c++ - Why does nothing happen after instantiation? (C++ memory allocator implementation)
- r - 如何将 grob 剪辑到 grobTree 对象中
- sms - “验证”API - 日志和设置
- kubernetes - 为什么默认的 Google Kubernetes Engine 集群中有 3 个节点?
- redis - Redis,从命令行配置 redis.conf
- sql - 用于重命名 SQL Server XML 中的元素的函数