循环遍历法
public static int findMaxIndex(int[] array) {
int maxIndex = 0;
for (int i = 1; i < array.length; i++) {
if (array[i] > array[maxIndex]) {
maxIndex = i;
}
}
return maxIndex;
}
使用Java 8的流API
import java.util.Arrays;
import java.util.OptionalInt;
public static int findMaxIndexUsingStreams(int[] array) {
OptionalInt maxIndex = Arrays.stream(array).boxed().max(Integer::compare);
return maxIndex.isPresent() ? maxIndex.getAsInt() : -1;
}
使用Java 8的`Collectors.maxBy`
import java.util.Arrays;
import java.util.Comparator;
import java.util.Optional;
public static int findMaxIndexUsingCollectorsMaxBy(int[] array) {
Optional
maxIndex = Arrays.stream(array) .boxed()
.collect(Collectors.maxBy(Comparator.naturalOrder()));
return maxIndex.isPresent() ? maxIndex.get() : -1;
}
使用Java 8的`Arrays.stream`和`collectors.toMap`
import java.util.Arrays;
import java.util.Map;
import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors;
public static int findMaxIndexUsingCollectorsToMap(int[] array) {
Optional
> maxEntry = Arrays.stream(array) .boxed()
.collect(Collectors.toMap(Function.identity(), Function.identity(), (e1, e2) -> e1, LinkedHashMap::new))
.entrySet().stream()
.max(Map.Entry.comparingByValue());
return maxEntry.isPresent() ? maxEntry.get().getValue() : -1;
}
以上方法都可以用来找到数组中最大值的索引。选择哪种方法取决于你的具体需求和偏好。如果你使用的是Java 8或更高版本,使用流API会更加简洁和现代化。如果你使用的是较旧的Java版本,那么循环遍历法可能是更直接的选择。