优化这段代码Date occurredOn = new Date(); Map<String,Long> map = new HashMap(); jsonArray.stream().forEach(item->{ Map timeMap = (Map)item; if (map.isEmpty()||map.size()==0){ Long beginTime = (Long) timeMap.get("beginTime"); Long endTime = (Long) timeMap.get("endTime"); Long size = (Long) timeMap.get("size"); if (beginTime<occurredOn.getTime()&&occurredOn.getTime()<endTime){ map.put("time",occurredOn.getTime()+size); } } }); Long ooc = map.get("time"); System.out.println(ooc);
时间: 2024-01-18 14:01:56 浏览: 68
java 读取csv 并转为Map<String,Object>
首先,应该避免在循环中使用isEmpty()和size()方法,这会导致性能下降。可以在循环外部先判断jsonArray是否为空,然后使用forEach方法遍历。
其次,可以使用Lambda表达式和Optional类来简化代码和避免空指针异常。
最后,如果jsonArray包含大量数据,可以考虑使用并行流来提高性能。
下面是优化后的代码:
```
Date occurredOn = new Date();
Map<String,Long> map = new HashMap<>();
if (!jsonArray.isEmpty()) {
jsonArray.parallelStream().map(item -> (Map<String, Long>) item)
.filter(timeMap -> {
Long beginTime = timeMap.get("beginTime");
Long endTime = timeMap.get("endTime");
return beginTime < occurredOn.getTime() && occurredOn.getTime() < endTime;
})
.findFirst()
.ifPresent(timeMap -> map.put("time", occurredOn.getTime() + timeMap.get("size")));
}
Long ooc = map.get("time");
System.out.println(ooc);
```
阅读全文