1. ホーム
  2. java

[解決済み] Java, 配列の要素をシフトする

2022-01-29 15:06:38

質問

Javaでオブジェクトの配列を持っていて、1つの要素を一番上に引っ張って、残りを1つ下にずらそうとしているのですが、どうすればいいですか?

サイズ10の配列があり、5番目の要素を引き出そうとしているとします。5番目の要素は位置 0 で、0から5までのすべての要素が1つ下にシフトされます。

このアルゴリズムは、要素を適切にシフトさせるものではありません。

Object temp = pool[position];

for (int i = 0; i < position; i++) {                
    array[i+1] = array[i];
}
array[0] = temp;

どうすれば正しくできるのか?

どのように解決するのですか?

配列が {10,20,30,40,50,60,70,80,90,100} であると仮定します。

あなたのループが行うことは

イテレーション1。 array[1] = array[0]; {10,10,30,40,50,60,70,80,90,100} とする。

イテレーション2。 array[2] = array[1]; {10,10,10,40,50,60,70,80,90,100} とする。

本来やるべきことは

Object temp = pool[position];

for (int i = (position - 1); i >= 0; i--) {                
    array[i+1] = array[i];
}

array[0] = temp;