JavaでArrayListの指定した位置に要素を挿入する方法を解説
JavaのArrayListクラスに用意されているadd()メソッドを使うと、リストに要素を追加できます。このメソッドには、以下の2つのバリアント(オーバーロード)が存在します。
add(E e) ― 引数としてオブジェクト(要素)を受け取り、その要素をリストの末尾に追加します。
public void add(int index, E element) ― 挿入したい要素と、挿入位置を表す整数値(インデックス)を受け取ります。指定された位置に要素を挿入し、それまでその位置にあった要素や後続の要素はすべて右に1つずつシフトされます(インデックスが1つずつ増えます)。
つまり、インデックスを引数に取るadd()メソッドを使用することで、リスト内の任意の位置に要素を挿入することが可能です。
サンプルコード
import java.util.ArrayList;
import java.util.Iterator;
public class OccurenceOfElements {
public static void main(String args[]) {
ArrayList <String> list = new ArrayList<String>();
// ArrayListオブジェクトの生成
list.add("JavaFX");
list.add("Java");
list.add("WebGL");
list.add("OpenCV");
list.add("OpenNLP");
list.add("JOGL");
list.add("Hadoop");
list.add("HBase");
list.add("Flume");
list.add("Mahout");
list.add("Impala");
System.out.println("配列リストの内容(先頭から末尾へ):");
Iterator<String> it = list.iterator();
while(it.hasNext()) {
System.out.print(it.next()+", ");
}
// 6番目の位置に要素を追加
list.add(6, "Hadoop");
it = list.iterator();
System.out.println();
System.out.println("新しい要素を挿入した後の配列リストの内容:");
while(it.hasNext()) {
System.out.print(it.next()+" ");
}
}
}実行結果
配列リストの内容(先頭から末尾へ): JavaFX, Java, WebGL, OpenCV, OpenNLP, JOGL, Hadoop, HBase, Flume, Mahout, Impala, 新しい要素を挿入した後の配列リストの内容: JavaFX Java WebGL OpenCV OpenNLP JOGL Hadoop Hadoop HBase Flume Mahout Impala
補足ポイント
インデックスは0から始まるため、「6番目の位置」に挿入する場合は
add(6, 要素)と指定します。これは7番目の要素の直前に挿入されることを意味します。存在しないインデックス(現在のサイズより大きい値)を指定すると、IndexOutOfBoundsExceptionがスローされるので注意が必要です。
指定位置への挿入では、後続要素のシフトが発生するため、大量のデータを扱う場合や頻繁な中間挿入を行う場合はパフォーマンスへの影響も考慮しましょう。
-
JavaのJTableセルにJRadioButton(ラジオボタン)を追加・挿入する方法
JTableはJComponentクラスのサブクラスであり、情報を複数の行(Row)と列(Column)で表示するテーブルを作成するために使用できるSwingコンポーネントです。JTable上で値が選択されるとTableModelEventが生成され、このイベントはTableModelListenerインターフェースを実装することによって処理されます。 JTableのセルにラジオボタン(JRadioButton)を追加・挿入したい場合は、TableCellRendererインターフェースとDefaultCellEditorクラスをそれぞれカスタマイズします。レンダラーがセルの「表示」を担当し、
-
【Java】JTableのセル内にチェックボックス(JCheckBox)を表示・追加する方法
JTableはJComponentクラスのサブクラスであり、複数の行と列から構成される表形式のデータを表示するためのコンポーネントです。JTable上で値が選択されるとTableModelEventが発生し、このイベントはTableModelListenerインターフェースを実装することで処理できます。 JTableのセル内にチェックボックスを表示したい場合は、テーブルモデルのgetColumnClass()メソッドをオーバーライドし、Boolean.classを返すようにします。こうすることで、Swingは該当する列に対して自動的にチェックボックス(JCheckBox)をセルレンダラーおよび