【发布时间】:2016-12-27 11:53:30
【问题描述】:
我有一段使用传统 for 循环编写的工作代码,如下所示。我想重构它以使用 java 8 流并删除 for 循环。以下代码的输出应为 3,因为这是最长的连续数字列表(4、5 和 6)
List<Integer> weekDays = Lists.newArrayList(1, 2, 4, 5, 6);
List<Integer> consecutiveIntervals = Lists.newArrayList();
int maxConsecutiveTillNow = 1;
for (int i = 1; i < weekDays.size(); i++) {
if (weekDays.get(i) - weekDays.get(i - 1) == 1) {
maxConsecutiveTillNow++;
} else {
consecutiveIntervals.add(maxConsecutiveTillNow);
maxConsecutiveTillNow = 1;
}
}
consecutiveIntervals.add(maxConsecutiveTillNow);
System.out.println(consecutiveIntervals.stream()
.max(Integer::compareTo)
.get()
);
【问题讨论】:
标签: java java-8 java-stream