我有一个workStatuses列表。每个workStatus都有其名称和时间。我可以在遍历每个workStatus的同时执行workStatus.getName()
。
for (workStatus ws: workStatuses) {
String name = ws.getName();
}
接下来,我有一个名为nameList的名称列表。
List<String> nameList = new ArrayList<String>();
nameList.add("Completed");
nameList.add("Failed");
现在我正在使用HashMap来计算每个名称具有的workStatuses的数量。
通过workStatuses进行迭代。
为每个workStatus查找名称。
检查该名称是否存在于我的nameList中。
如果是,则增加
该名称的Workstatus数量,并将其计入HashMap。
我做了什么:
Integer numberOfWorkStatus =0;
Map<String,Integer> hm = new HashMap<String,Integer>();
for(WorkStatus ws: workStatuses) {
if (ws.getName()!=null && nameList.contains(ws.getName())) {
numberOfWorkStatus++;
hm.put(ws.getName(), numberOfWorkStatus);
}
}
return hm;
有人可以建议我是否做对了吗?
最佳答案
您可以使用流API,如果我做对的话,请执行以下操作:
// List<WorkStatus> workStatuses = ...
workStatuses.stream().collect(
Collectors.groupingBy(WorkStatus::getName, Collectors.counting()));
结果,您将拥有
Map<String, Long>