如何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之间的差别不会很明显。
- 更好的方法来findArrayList中的项目的索引?
- 我如何计算两个ArrayLists之间的差异?
- ArrayList的初始大小
- 列出<String>到ArrayList <String>转换问题
- ArrayList与LinkedList
- 将两个arrayLists合并成一个新的arrayList,在Java中没有重复和按顺序
- 铸造Arrays.asList导致exception:java.util.Arrays $ ArrayList不能转换为java.util.ArrayList
- java.lang.IndexOutOfBoundsException:源不适合dest
- Java中的ArrayList或List声明