我有一个整数小时,表示一天中的24小时。 对于每个小时,我都有一个int表示这个小时的富裕程度。
我正在尝试找出一天中最繁忙的两个小时
private int this.hoursCounts = new int[24];
我需要使用primitve数据类型,但我可以将其转换为方法
所以我将数组中的基元转换成这样的列表。
List<Integer> list = Arrays.stream(this.hourCounts).boxed().collect(Collectors.toList());
现在我为下一个小时的每一小时的富裕度添加一个数组
两个小时的开始=>这两个小时的盛行
List<Integer> list2 = IntStream.range(0, list.size())
.filter(i -> i < list.size() - 1)
.boxed()
.map((i) -> list.get(i) + list.get(i + 1))
.collect(Collectors.toList());
但是我找不到在一行中两小时返回最忙索引的方法,我需要创建一个新列表来执行我想要的操作。所以我通过用我的新列表来减少最大值来计算索引...
int index = IntStream.range(0, list2.size())
.reduce((last, current) -> list2.get(last) > list2.get(current) ? last : current)
.getAsInt();
我可以在一行中执行此操作而不创建新列表吗? 我只需要使用lambda! 谢谢您的帮助。