1

私のコードは以下です。コードの効率化のためにバブルソートの代わりにプロジェクトに含まれるソート方法です。私の問題は、次のようなエラーが発生し続けることです。

array required, but java.util.List<Inpatient> found

&

QuickSort(java.util.List<Inpatient>,int,int) in UtilitiesInpatient cannot be applied to (int,int)

私はいくつかの調査を試みましたが、多くのアルゴリズムは文字列または整数の並べ替えによって大きく異なり、エラー自体の調査も非常に役に立ちませんでした。助けやヒントをありがとう!

    public void QuickSort (List<Inpatient> inpatientArrayListIn, int first, int last) 
    {

        // Quick Sort

        List<Inpatient> pivotValue = new ArrayList<Inpatient>();
        List<Inpatient> lowerPointerValue = new ArrayList<Inpatient>();
        List<Inpatient> upperPointerValue = new ArrayList<Inpatient>();

        int pivotIndex = first;
        Inpatient tempPatient = (inpatientArrayListIn.get(pivotIndex));
        String pivot = tempPatient.getSurname();
        int upperPointer = first;
        int lowerPointer = last;

        while (upperPointer < lowerPointer) {


            while ((inpatientArrayListIn.get(upperPointer).getSurname().compareToIgnoreCase(pivot) <= 0) && (upperPointer < last)) {

                upperPointer++;

            }


            while (((inpatientArrayListIn.get(lowerPointer).getSurname()).compareToIgnoreCase(pivot) > 0) && (lowerPointer > first)){

                lowerPointer--;

            }

            if (upperPointer < lowerPointer) {

                for (int i = 0; i <= inpatientArrayListIn.size(); i++) {

                    upperPointerValue[i] = ((inpatientArrayListIn.get(upperPointer)));
                    lowerPointerValue[i] = ((inpatientArrayListIn.get(lowerPointer)));

                }

              /*  defaultTable.removeRow (upperPointer);
                defaultTable.insertRow (upperPointer, lowerPointerValue);
                defaultTable.removeRow (lowerPointer);
                defaultTable.insertRow (lowerPointer, upperPointerValue);
                */
                ++upperPointer;
                --lowerPointer;

            }

        }

        if ((inpatientArrayListIn.get(lowerPointer).getSurname()).compareTo(pivot) < 0) {

            for (int i = 0; i <= inpatientArrayListIn.size(); i++) {

                pivotValue[i] = inpatientArrayListIn.get(pivotIndex);
                lowerPointerValue[i] = (inpatientArrayListIn.get(lowerPointer));

            }
            /*
            defaultTable.removeRow (pivotIndex);
            defaultTable.insertRow (pivotIndex, lowerPointerValue);
            defaultTable.removeRow (lowerPointer);
            defaultTable.insertRow (lowerPointer, pivotValue);
            */
        }

        // Value in lowerPointer is now the pivot

        if (first < (lowerPointer-1)) 
        {

            QuickSort (first, (lowerPointer-1));

        }

        if ((lowerPointer+1) < last) 
        {

            QuickSort ((lowerPointer+1), last);

        }

    }
4

1 に答える 1

0

この部分では:

    if (first < (lowerPointer-1)) 
    {

        QuickSort (first, (lowerPointer-1));

    }

    if ((lowerPointer+1) < last) 
    {

        QuickSort ((lowerPointer+1), last);

    }

List<Inpatient> inpatientArrayListInエラーメッセージに記載されているとおり、最初の引数が欠落しています。Listまた、次のように配列として使用しようとしています。

upperPointerValue[i] = ((inpatientArrayListIn.get(upperPointer)));

のドキュメントを見ると、List必要なメソッドはですset(int index, E element)。したがって、上記は次のようになります。

upperPointerValue.set(i, inpatientArrayListIn.get(upperPointer));

あなたが直面している問題について、コンパイラーがまだ教えていないということについて言えることは、実際にはそれほど多くありません。

于 2013-02-15T19:58:18.090 に答える