程序正在返回已排序的索引,但数组从未排序

时间:2017-01-11 23:06:53

标签: java

我的程序有一个方法,允许用户搜索数组中的元素并返回其索引。由于某种原因,它会返回索引,如果数组是从未进行过排序的那样。

以下是方法:

public static ArrayList elementIndex(int search) {

        ArrayList<Integer> index = new ArrayList<Integer>();

        for (int i = 0; i<array.length; i++) 
            if (search == array[i]) {

            index.add(i + 1); 

        }
        return index;

    } 

我对数组进行排序的唯一一次是在之前的方法中,所以如果有事可做的话我会包含它:

public static int mostCommon(int size) {

        int[] arraySorted = array;      
        int mostCommon = 0, mostCommonCount = 0, currentCount = 0;

        Arrays.sort(arraySorted);

        for (int i = 1; i < size; i++) {

            if (arraySorted[i - 1] == arraySorted[i]) {
                currentCount++;

                if (currentCount > mostCommonCount) {
                    mostCommonCount = currentCount;
                    mostCommon = arraySorted[i];
                }
            }
            else 
                currentCount = 0;

        }

        return mostCommon;
    }

1 个答案:

答案 0 :(得分:0)

代码中的

arraySortedmostCommon方法)是对(全局)变量array的引用 - 都指向同一个对象。因此,一个阵列发生的事情也发生在另一个阵列上。即当你排序一个时,另一个(同一个数组)也会被排序。