我有一个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>

10-07 22:19