如何找到列表中最高数字的所有出现?

use*_*868 4 java loops arraylist

基本上,如果我有一个ArrayList<Integer>contains <0, 1, 5, 5, 4, 2>,我需要为索引创建一个单独ArrayList<2, 3>

我了解如何获得最大数字第一次出现的索引,但我不知道如何同时获得所有这些。

我原本是这么想的:

int highest = 0;

for (int b = 0; b < arrlst.size(); b++) {
    int p = arrlst.get(b);

    if (highest <= p) {
        highest = p;
        highestindex.add(b);
    }
}
Run Code Online (Sandbox Code Playgroud)

但后来我意识到这会自动添加第一个,以及任何高于当前最大值的,即使它们不是整体最大值。

然后我highestindex.add(...)想把这个部分放在循环之外,但它只会添加最后一个索引而不是全部。

ceg*_*dev 5

我会去添加和清除 a List<Integer>

public ArrayList<Integer> getIndexesOfHighestNum(List<Integer> list) {
    List<Integer> indexes = new ArrayList<Integer>();
    int highest = Integer.MIN_VALUE;

    for (int i = 0; i < list.size(); i++) {
        int value = list.get(i);

        if (value > highest) {
            indexes.clear();
            indexes.add(i);
            highest = value;
        } else if (value == highest)
            indexes.add(i);
    }

    return indexes;
}
Run Code Online (Sandbox Code Playgroud)