ArrayListクラス
可変長配列を利用する – ArrayListクラスArrayListは、内部的には配列を利用したリスト構造です。標準的な配列と異なる点は、サイズを後からでも変更できる点です。その性質上、インデックス値による値の読み書きは高速ですが、要素の挿入/削除は、配列サイズが大きくなるほど、また、操作位置が先頭に近くなるほど遅くなります。
ArrayListクラスで利用できるメソッドには、以下のようなものがあります。
ArrayListクラスで利用できる主なメソッド | |
---|---|
メソッド | 概要 |
add([int index,] E e) | 指定位置indexに要素eを挿入(index省略で末尾に挿入) |
clear() | リストからすべての要素を削除 |
contains(Object e) | リストに要素oが含まれているかを判定 |
get(int index) | index番目の要素を取得 |
indexOf(Object e) | 要素oが登場する最初のインデックス値を取得 |
isEmpty() | リストが空か判定 |
remove(int index|Object o) | 指定の要素を削除 |
set(int index, E e) | index番目の要素を設定 |
int size() | リストに含まれる要素の数を取得 |
以下は、ArrayListに要素をセットし、その値を順に出力する例です。
CollList.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | package com.example.mynavi.collection; import java.util.ArrayList; import java.util.List; public class CollList { public static void main(String[] args) { List<String> list = new ArrayList<String>() { { add( "Windows" ); add( "Linux" ); add( "macOS" ); } }; for (String str : list) { System.out.println(str); // 結果:Windows、Linux、macOS } System.out.println( "2番目の要素は" + list.get( 1 )); // 結果:2番目の要素はLinux System.out.println(list.contains( "Linux" )); // 結果:true if (!list.isEmpty()) { System.out.println( "要素数は" + list.size() + "個です。" ); // 結果:要素数は3個です。 } list.remove( 0 ); System.out.println(list); // 結果:[Linux, macOS] list.clear(); System.out.println(list); // 結果:[] } } |
ArrayListへの挿入に際しては、メモリーの再割り当てが発生する可能性がある点に注意してください。というのも、ArrayListはあらかじめ一定サイズの領域を準備していますが、これが不足していると、自動的にサイズを拡張しようとするのです。
しかし、サイズの拡張はオーバーヘッドの大きな処理なので、できるだけ避けるべきです。最初から必要なサイズが判っている場合には、インスタンス化に際してサイズを明示的に宣言しておくことをお勧めします。デフォルトのサイズは10です。
1 | List<String> list = new ArrayList<String>( 50 ); |