如何find一个ArrayList中的最小值,以及索引号? (JAVA)

我需要在Java中的ArrayList中获取最小值的索引值。 我arraylist持有几个浮动,我试图想办法我可以得到最小的浮动的索引号,所以我可以在我的代码中的其他地方使用该索引号。 我是初学者,所以请不要恨我。 谢谢!

你可以使用Collections.min和List.indexOf :

int minIndex = list.indexOf(Collections.min(list)); 

如果你只想遍历列表一次(上面可能遍历它两次):

 public static <T extends Comparable<T>> int findMinIndex(final List<T> xs) { int minIndex; if (xs.isEmpty()) { minIndex = -1; } else { final ListIterator<T> itr = xs.listIterator(); T min = itr.next(); // first element as the current minimum minIndex = itr.previousIndex(); while (itr.hasNext()) { final T curr = itr.next(); if (curr.compareTo(min) < 0) { min = curr; minIndex = itr.previousIndex(); } } } return minIndex; } 

这应该使用内置函数来完成。

 public static int minIndex (ArrayList<Float> list) { return list.indexOf (Collections.min(list)); } 

尝试这个:

 public int getIndexOfMin(List<Float> data) { float min = Float.MAX_VALUE; int index = -1; for (int i = 0; i < data.size(); i++) { Float f = data.get(i); if (Float.compare(f.floatValue(), min) < 0) { min = f.floatValue(); index = i; } } return index; } 

有一个更简单的方法来在数组列表中find最小整数:

 int min = array.get(0); for (int i : array){ min = min < i ? min : i; } 

你必须遍历整个数组,并保留两个辅助值:

  • 你发现的最小值(在结束的路上)
  • 您find最小值的地方的索引

假设你的数组叫做myArray 。 在这个代码的最后, minIndex的索引是最小的值。

 var min = Number.MAX_VALUE; //the largest number possible in JavaScript var minIndex = -1; for (int i=0; i<myArray.length; i++){ if (myArray[i] < min){ min = myArray[i]; minIndex = i; } } 

这是假设最坏的情况:一个完全随机数组。 它是一个O(n)algorithm或者n阶algorithm,这意味着如果你的数组中有n个元素,那么在你知道你的答案之前,你必须先看看它们。 O(n)algorithm是最糟糕的,因为它们花费了大量的时间来解决问题。

如果你的数组被sorting或者有其他特定的结构,那么algorithm可以被优化得更快。

尽pipe如此,除非你拥有数千个值,否则不要担心优化问题,因为O(n)algorithm和更快的algorithm之间的差别不会很明显。