【发布时间】:2020-11-23 11:43:54
【问题描述】:
我的代码中有这个方法,需要通过使用 java 8 表达式来简化和减少行。 Lambda 可以用于此,但如果没有列表作为输入,它似乎是不可能的。
public ResourceUsage[] filterResourceUsages(ResourceUsage[] resourceUsages, int role, int includeResourceType)
throws SpiderException
{
ArrayList<ResourceUsage> filteredResourceUsages = new ArrayList<>();
String[] ids = new String[resourceUsages.length];
for (int i = 0; i < resourceUsages.length; i++)
{
ids[i] = resourceUsages[i].resource;
}
ResourceData[] resourceData = resourceToolkitAdapter.getData(ids);
for (int i = 0; i < resourceData.length; i++)
{
if (resourceUsages[i].role == role && resourceData[i].basic.type == includeResourceType)
{
filteredResourceUsages.add(resourceUsages[i]);
}
}
return filteredResourceUsages.toArray(new ResourceUsage[filteredResourceUsages.size()]);
}
我尝试过使用resourceUsages.forEach(resourceUsages.resource-> do something);,但没有列表作为输入似乎是不可能的。
有什么办法可以简化这段代码?
【问题讨论】:
-
"没有列表作为输入似乎不可能" ...
Arrays.stream(myArray) -
最终列表
ids = resourceUsages.stream().map(e -> e.resource).collect(toList());
标签: java for-loop lambda foreach java-8