Учитывая список целочисленных элементов, как получить максимальное значение и его индекс за один снимок. Если имеется более одного элемента с таким же максимальным значением, возвращающий индекс любого из них является точным.Как получить индекс и максимальное значение массива за один снимок?
Например:
// Initialize list of integer
List<Integer> intList = Arrays.asList(5, 8, 3, 2);
// To get max value
Optional<Integer> maxVal = intList.stream().reduce(Integer::max);
// But how could I also get its index without iterating the array again?
Если я должен сделать это только один раз, я мог бы просто отсортировать массив и получить первый или последний (на основе порядка сортировки). Однако я хотел бы видеть, как мы можем это сделать без сортировки.
Что значение в штучной упаковке? –
@SriniK Я считаю, что это потому, что у вас не может быть «Компаратор». Но опять же, я могу ошибаться, так как я все еще немного новичок в Java 8. –
CKing
@Chetan Kinger: вы правы, нет «Компаратор», и поэтому 'IntStream' не предлагает' max (Comparator) ', но только' max() ', который здесь не помогает (то же самое относится к' min' или 'sorted',' IntStream' поддерживает только натуральный порядок). –
Holger