优化一下代码 JSONObject typeObj = new JSONObject(); Map<String, Integer> typeMap = new HashMap<>(); typeMap.put(SpecialWorkType.FIRE_WORK.desc, 0); typeMap.put(SpecialWorkType.CONFINED_WORK.desc, 0); typeMap.put(SpecialWorkType.MAINTENANCE_WORK.desc, 0); typeMap.put(SpecialWorkType.HIGH_WORK.desc, 0); typeMap.put(SpecialWorkType.LIFTING_WORK.desc, 0); typeMap.put(SpecialWorkType.ELECTRICIAN_WORK.desc, 0); typeMap.put(SpecialWorkType.LAND_WORK.desc, 0); typeMap.put(SpecialWorkType.ROAD_WORK.desc, 0); specialOperations.forEach(v -> { Integer domainCount = domainMap.get(v.getDomainId()); if (domainCount == null) { domainMap.put(v.getDomainId(), 1); } else { domainMap.put(v.getDomainId(), ++domainCount); } Integer typeCount = typeMap.get(v.getJobType().desc); typeMap.put(v.getJobType().desc, ++typeCount); });
时间: 2024-03-20 21:44:42 浏览: 80
StringtoList和StringtoMap和StringtoObject和StringtoArray
5星 · 资源好评率100%
可以尝试使用更简洁的方式来优化这段代码,如下所示:
```
Map<Long, Integer> domainMap = specialOperations.stream()
.collect(Collectors.groupingBy(SpecialOperation::getDomainId, Collectors.summingInt(e -> 1)));
Map<String, Integer> typeMap = specialOperations.stream()
.collect(Collectors.groupingBy(v -> v.getJobType().desc, Collectors.summingInt(e -> 1)));
```
这里使用了Java 8引入的Stream API,利用 `Collectors.groupingBy()` 方法将特定属性相同的对象进行分组,并使用 `Collectors.summingInt()` 方法进行计数。这样可以简化代码,并提高代码的可读性和可维护性。
阅读全文