-7

私は Java の世界の初心者です。配列を使用していました。インタビューで、配列を逆にするコードを書くように求められていました。Apache commons ArrayUtils クラスを使用して、しかしJava自体で同じことを達成する方法を教えてください。以下は私のアプローチです

 int[] iArray = new int[] {101,102,103,104,105};
     String[] sArray = new String[] {"one", "two", "three", "four", "five"}; 
     System.out.println("Original int array : " + Arrays.toString(iArray));
     ArrayUtils.reverse(iArray); System.out.println("reversed int array : " + Arrays.toString(iArray)); 
     System.out.println("Original String array : " + Arrays.toString(sArray)); ArrayUtils.reverse(sArray); System.out.println("reversed String array in Java : " + Arrays.toString(sArray)); 

出力:-

Original int array : [101, 102, 103, 104, 105] reversed int array : [105, 104, 103, 102, 101] Original String array : [one, two, three, four, five] reversed String array in Java : [five, four, three, two, one]

Java自体で同じことを達成する方法を教えてください。

4

5 に答える 5

2

次のように配列を反転できます。

public void reverse(Object [] a){
    for(int i = 0; i < a.length / 2; i++){
        Object temp = a[i]; // swap using temporary storage
        a[i] = a[a.length - i - 1];
        a[a.length - i - 1] = temp;
    }
}

中央値は変更されないため、配列の長さが奇数であっても問題ないことに注意してください。私はこれをテストしていないことを認めなければなりませんが、うまくいくはずです。

実施例

于 2013-03-22T14:50:16.600 に答える
0

Javaでこのようなことを試して、指定された配列を逆にすることができます。

Collections.reverse(Arrays.asList(sArray));
于 2013-03-22T15:07:14.533 に答える
0
for(int i=0; i<iArray.length/2; i++)
{
    int temp;
    iArray[i] = temp;
    iArray[i] = iArray[jArray.length-i-1];
    iArray[jArray.length-i-1] = temp;
}
于 2013-03-22T14:48:11.133 に答える
0

タスクを論理的に考えるだけで、書くのは簡単でなければなりません。

配列には 0 から N までのインデックスがあります。順序を逆にするには、インデックス 0 の要素の場所をインデックス N と交換し、1 を N-1 と交換する必要があります。

インデックス i(0...N) k(0...N) のすべてのペアがちょうど 1 回のスワッピング操作を経験したときに終了です。

これは、コード内の非常に最小限のロジックで表現できます。

for (int i=0, j=array.length-1; i<j; ++i, --j) {
    temp = array[i];
    array[i] = array[j];
    array[j] = temp;
}

以上です。

于 2013-03-22T15:00:31.563 に答える