Есть ли лучший способ получить индекс максимального значения списка, созданного функцией lambdas - PullRequest
0 голосов
/ 18 октября 2018

У меня есть массив 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();

Могу ли я сделать это в одной строке и без создания нового списка?мне нужно использовать только лямбду!Спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...