У меня есть массив int, представляющий 24 часа в сутки.Для каждого часа у меня есть целое число, представляющее богатства в эти часы.
Я пытаюсь выяснить, каковы самые занятые два часа в день
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());
Но я не могу найти способ вернуть индекс активности двух часов в одной строке, мне нужно создать новый списокделать то, что я хочу.Поэтому я вычисляю индекс, вычисляя максимальное значение с помощью Reduce, используя мой новый список ...
int index = IntStream.range(0, list2.size())
.reduce((last, current) -> list2.get(last) > list2.get(current) ? last : current)
.getAsInt();
Могу ли я сделать это в одной строке и без создания нового списка?мне нужно использовать только лямбду!Спасибо за вашу помощь.