上面的标题总结了我的问题,为了澄清事情,这里给出一个示例:
array[0] = 1
array[1] = 3
array[2] = 7 // largest
array[3] = 5
所以我希望得到的结果为2,因为它包含最大的元素7。
上面的标题总结了我的问题,为了澄清事情,这里给出一个示例:
array[0] = 1
array[1] = 3
array[2] = 7 // largest
array[3] = 5
所以我希望得到的结果为2,因为它包含最大的元素7。
int maxAt = 0;
for (int i = 0; i < array.length; i++) {
maxAt = array[i] > array[maxAt] ? i : maxAt;
}
public int getIndexOfLargest( int[] array )
{
if ( array == null || array.length == 0 ) return -1; // null or empty
int largest = 0;
for ( int i = 1; i < array.length; i++ )
{
if ( array[i] > array[largest] ) largest = i;
}
return largest; // position of the first largest found
}
indexOfLargest
作为一个单一、自说明的变量就足够了。 - Duncan Jonesint indexOfLargest = 0; for ( int i = 0; i < array.length; i++ ) { if ( array[i] > array[indexOfLargest] ) { indexOfLargest = i; }}
。基本上与ifLoop的答案相同。 - Duncan Jones1
开始循环,而不是0
。 - Boris Brodski一种方法是:
Integer[] array = new Integer[4];
array[0] = 1;
array[1] = 3;
array[2] = 7;
array[3] = 5;
List<Integer> iList = Arrays.asList(array);
System.out.println(iList.indexOf(Collections.max(iList)));
System.out.println(iList.indexOf(Collections.min(iList)));
Integer
类型,那么这是一个不错的解决方案。但很遗憾,在许多情况下,它并不是这样的,而且没有一种愉快的方法在两者之间移动(没有外部库的情况下)。 - Duncan Jonespublic int getIndexOfMax(int array[]) {
if (array.length == 0) {
return -1; // array contains no elements
}
int max = array[0];
int pos = 0;
for(int i=1; i<array.length; i++) {
if (max < array[i]) {
pos = i;
max = array[i];
}
}
return pos;
}
Integer array[] = new Integer[4];
array[0] = 1;
array[1] = 3;
array[2] = 7;
array[3] = 5;
List < Integer > numberList = Arrays.asList(array);
int index_maxNumber = numberList.indexOf(Collections.max(numberList));
System.out.println(index_maxNumber);
int array[] = new int[]{1,3,7,5};
int maxIndex =IntStream.range(0,array.length)
.boxed()
.max(Comparator.comparingInt(i -> array[i]))
.map(max->array[max])
.orElse(-1);
List<Integer> list = Arrays.asList(1, 3, 7, 5);
IntStream.range(0, list.size())
.reduce((i, j) -> list.get(i) > list.get(j) ? i : j)
.getAsInt();
两行代码可以高效地完成这个任务
//find the maximum value using stream API of the java 8
Integer max =Arrays.stream(numbers) .max(Integer::compare).get();
// find the index of that value
int index = Arrays.asList(numbers).indexOf(max);
我会这样做(因为我不知道任何预定义的函数来获取最高元素的索引,只有元素本身,当然你可以使用list.indexOf(element)
来获取索引,但需要将数组转换为列表并进行2次迭代):
maxIndex = 0;
for (int i = 0; i < array.length; i++) {
if (array[i] > array[maxIndex]) {
maxIndex = i;
}
}