処理中の配列からオブジェクトを削除するための最良の方法

StackOverflow https://stackoverflow.com/questions/2459780

  •  20-09-2019
  •  | 
  •  

質問

私は実際に処理がのプッシュのと配列を操作するためののポップの方法を持っていたが、それは私が削除するための最良の方法を把握しようとして残っていないことから望みますアレイ内の特定の位置にオブジェクト。私はこれが多くの人々のためにそれを取得としての基本であると確信しているが、私はそれにいくつかの助けを使用することができ、私は処理基準を閲覧することで多くを把握することができていない。

私はそれが重要とは思わないが、あなたの参考のためにここで私が最初にオブジェクトを追加するために使用されるコードは、次のとおりです。

Flower[] flowers = new Flower[0];

for (int i=0; i < 20; i++)
{
    Flower fl = new Flower();
    flowers = (Flower[]) expand(flowers, flowers.length + 1);
    flowers[flowers.length - 1] = fl;
}

この質問のために、のは、私は位置15のおかげで、みんなからオブジェクトを削除したいとしましょう。

役に立ちましたか?

解決

私はあなたの最善の策でのarraycopy使用することだと思います。あなたは、srcとdestに同じ配列を使用することができます。次のようなもの(未テスト):

// move the end elements down 1
arraycopy(flowers, 16, flowers, 15, flowers.length-16);
// remove the extra copy of the last element
flowers = shorten(flowers);

他のヒント

また、プレーンな配列より利用できる多くの方法がありますのArrayListするを使用して検討する必要があります。

あなたはmyArrayList.remove(14)を使用して十五要素を削除することができます。

私はそれが多くの人々はまだ答えを探しているようですが、この質問は長い時間前に頼まれた知っています。私はちょうどこれを書きました。私はそれをいくつかの方法をテストし、私がそれを望んでいた方法を実行しているようだ。

var yourArr = [1, 2, 3, 4];                                // use your array here
var removeIndex = 1;                                       // item to get rid of 

var explode = function(array, index) {                     // create the function
    var frontSet = subset(array, 0, index - 1);            // get the front
    var endSet = subset(array, index , array.length - 1);  // get the end
    yourArr = concat(frontSet, endSet);                    // join them
};

explode(yourArr, removeIndex);                             // call it on your array

これは一つの方法です。私はあなたにも、配列をループをことができると思います。何かのような...

var yourArr = [1, 2, 3, 4];
var removeIndex = 2;
var newArr = [];

for(var i = 0; i < yourArr.length; i++) {
    if(i < removeIndex) {
        append(newArr, yourArr[i]);
    } else if(i > removeIndex) {
        append(newArr, yourArr[i]);
    }
}

yourArr = newArr;

...それはあまりにも動作するはずだと思います。これは、それを必要と誰がお役に立てば幸いです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top