2011-08-16 15 views
62

サイズがnのオブジェクトのArrayListがあるとします。今では、特定の位置に別のオブジェクトを挿入したいとしましょう。インデックス位置k(0より大きくnより小さい)で、インデックス位置kの前後の他のオブジェクトに1つ前のインデックス位置をシフトさせたいとします。それで、Javaで直接これを行う方法はありますか?実際には、新しいオブジェクトを追加しながらリストをソートしておきたい。特定の位置のArrayListにオブジェクトを挿入する方法

答えて

119

、特定のインデックスでのArrayListに値挿入には使用:

public void add(int index, E element) 

この方法は、リストの次の要素をシフトします。挿入した新しいオブジェクトがソート順に従って間違った位置に座っているため、リストがソートされたままになることは保証できません。


指定された位置、使用時要素を置き換えます。このメソッドは、指定された要素を持つ リスト内の指定された位置にある要素を置き換え、以前の要素を返します

public E set(int index, E element) 

が指定された位置にあります。

+0

しかし、私はそれがインデックス位置 –

+8

でオブジェクトを置換すると思います@Harsh実際に考えるものは何もありません - ドキュメントはhttp://download.oracle.com/javaseこのメソッドが何をするかで非常に固有のものです//6 /docs/api/java/util/ArrayList.html#add(int、E) –

+0

@Harshを使用して、set(int index、Object Obj)を使用できます。 –

1

1は、ここで位置

39

ここで実際にあなたの特定の質問にそれを行うための方法がarrayList.add(1,"INSERTED ELEMENT");では、例えば、特定のインデックス

ArrayList<Integer> str=new ArrayList<Integer>(); 
    str.add(0); 
    str.add(1); 
    str.add(2); 
    str.add(3); 
    //Result = [0, 1, 2, 3] 
    str.add(1, 11); 
    str.add(2, 12); 
    //Result = [0, 11, 12, 1, 2, 3] 
+1

私はこの回答が好きです。呼び出しの結果が表示されるからです。 – aroth

0

で挿入するための単純なArrayListの例です。

私は23番目から1番目の要素(index == 0)をarrayListに移動したいので、23番目の要素を一時的な値に置き、リストから削除してリストの1番目に挿入します。それは働いていますが、より効率的ではありません。

List<ItemBean> list = JSON.parseArray(channelJsonStr,ItemBean.class); 
    for (int index = 0; index < list.size(); index++) { 
     if (list.get(index).getId() == 23) { // id 23 
      ItemBean bean = list.get(index); 
      list.remove(index); 
      list.add(0, bean); 
     } 
    } 
関連する問題