是否有更好的方法来获取由lambdas函数创建的列表的最大值的索引

时间:2018-10-18 17:22:27

标签: java lambda

我有一个整数小时,表示一天中的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! 谢谢您的帮助。

0 个答案:

没有答案