for (int i = 0, collect1Size = collect1.size(); i < collect1Size; i++) 比 for (int i = 0; i < collect1.size(); i++) 在使用上有什么区别吗?
时间: 2024-05-27 08:14:11 浏览: 3
在使用上,两者的区别在于第一种写法在循环开始前会先计算出集合的大小,然后将其保存在一个变量中,循环中使用这个变量来控制循环次数,这样可以避免在每次循环中重复计算集合大小,提高程序的效率。而第二种写法则在每次循环中都会计算一次集合大小。因此,如果集合的大小不会变化,建议使用第一种写法,如果集合的大小会变化,则应该使用第二种写法。
相关问题
for (int i = 0, collect1Size = collect1.size(); i < collect1Size; i++) 比 for (int i = 0; i < collect1.size(); i++) 优化了什么?
第一段代码在循环开始前就将集合collect1的大小存储在了局部变量collect1Size中,避免了在循环过程中多次访问collect1.size(),从而提高了代码的执行效率。而第二段代码在每次循环中都会调用一次collect1.size(),增加了访问集合大小的开销。因此,第一段代码相对于第二段代码可以提高程序的性能。
优化这段代码 public Boolean checkDateListOrder() { List<Date> dates=Arrays.asList(commenceTime,finishTime,completionDataTime,acceptanceTime,settlementTime); List<Date> collect = dates.stream().filter(Objects::nonNull).collect(Collectors.toList()); for (int i = 0; i < collect.size() - 1; i++) { if (collect.get(i).getTime() > collect.get(i + 1).getTime()) { return false; } } int lastIndexOf = dates.lastIndexOf(null); int first = dates.indexOf(null); if (lastIndexOf == -1) { return true; } else if (lastIndexOf != dates.size() - 1) { return false; } else { for (int i = first; i <= lastIndexOf; i++) { if (dates.get(i) != null) { return false; } } } return true; }
这段代码可能存在一些潜在的问题和性能瓶颈。以下是一个可能的优化版本:
public Boolean checkDateListOrder() {
List<Date> dates = Arrays.asList(commenceTime, finishTime, completionDataTime, acceptanceTime, settlementTime);
// 过滤掉空值并排序
List<Date> sortedDates = dates.stream()
.filter(Objects::nonNull)
.sorted(Comparator.comparing(Date::getTime))
.collect(Collectors.toList());
// 检查排序后的日期列表是否与原列表一致
if (sortedDates.size() != dates.size() - dates.stream().filter(Objects::isNull).count()) {
return false;
}
for (int i = 0; i < sortedDates.size() - 1; i++) {
if (sortedDates.get(i).getTime() > sortedDates.get(i + 1).getTime()) {
return false;
}
}
return true;
}
这个版本使用了流式编程和函数式编程的思想,使用流的过滤和排序操作来消除空日期和排序日期,使得代码更为简洁和易读。它还使用了基于流的 null 元素计数方法来检查原始日期列表中的空值。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)