java如何不改变一维数组顺序,获得其中最大三个值的序号

有一个一位数组,序号代表用户id,我要取最大三个值的用户,也就是得到最大那三个值的序号,怎么做

这有一个比较弱的办法,请参考:
import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.List;
public class Test {
public static void main (String[] args) {
int arr [] = {3,56,768,13,354,13,5,12,3};
// 数组复制,防止原来数组被破坏
int arrCopy [] = Arrays.copyOf(arr, arr.length);
// 数组排序
Arrays.sort(arrCopy);
// 与前三值比较,获取原数组前三的下标
for (int j = arrCopy.length - 1; j >= arrCopy.length - 3; j--){
for (int i = 0; i < arr.length; i++){
if (arr[i] == arrCopy[j]) {
System.out.println(i);
}
}
}
}
}

按照用户id排个序,然后取最大的三个

遍历数组取到三个最大值后,与原数组比对获取序号

取数组中的最大值这个会吧。
循环比较取得最大的那个值。把这个值改为一个三个数的数组(arr)。然后让这个数组的最小值和 一维数组(arr1)比较。,得到一个数。插入arr.然后arr重新比较取最小值。再去对比就能获得到最大的三个数

当前三个值有重复值时,会出现问题超过三个序号的问题,所以楼主塞值时要进行去重。