ArrayList
日本語 | 配列表 |
英語 | array list |
ふりがな | あれいりすと |
フリガナ | アレイリスト |
J2SEに含まれるクラスのひとつ。パッケージも含めたクラス名はjava.util.ArrayList。
可変長配列を実現するクラス。add()メソッドで追加でき、get()メソッドで取得する。
コレクションの代表的なクラス。これひとつあればだいたい事足りる。
要素としてObjectクラスのサブクラス、つまりあらゆるクラスを受け取れる。しかしそのため、要素として格納されている型が不明のため、ClassCastExceptionが発生する可能性大。
可変長配列として使用する目的にのみ使用し、それ以外は配列を使用するのがお勧め。また、J2SE5.0ではgenericsの使用をすべき。
Javaでは「引数の参照経由で値を返す」のが難しいため、メソッドの戻り値としてArrayListを返し、その中に「複数の戻り値」として値を返すという「テクニック」があるが、メソッドの中身を見なければどの要素にどの型の値が格納されているか分からず、バグの温床となりやすいため、この使用方法はすべきではない。
可変長配列を実現するクラス。add()メソッドで追加でき、get()メソッドで取得する。
コレクションの代表的なクラス。これひとつあればだいたい事足りる。
要素としてObjectクラスのサブクラス、つまりあらゆるクラスを受け取れる。しかしそのため、要素として格納されている型が不明のため、ClassCastExceptionが発生する可能性大。
可変長配列として使用する目的にのみ使用し、それ以外は配列を使用するのがお勧め。また、J2SE5.0ではgenericsの使用をすべき。
Javaでは「引数の参照経由で値を返す」のが難しいため、メソッドの戻り値としてArrayListを返し、その中に「複数の戻り値」として値を返すという「テクニック」があるが、メソッドの中身を見なければどの要素にどの型の値が格納されているか分からず、バグの温床となりやすいため、この使用方法はすべきではない。
参考サイト
// Sample.java
import java.util.ArrayList;
public class Sample
{
public static void main( String[] args )
{
// ArrayListを使用します。
ArrayList arylst = new ArrayList();
// 要素を追加します。
arylst.add( new Integer( 100 ) );
// 要素を取り出します。
System.out.println( arylst.get( 0 ) );
// 100
// 配列に変換もできます。
Integer[] integers = (Integer[])arylst.toArray( new Integer[0] );
System.out.println( integers[0] );
// 100
// add()の引数はObjectなので、クラスならなんでも受け取れます。
arylst.add( "あいうえお" );
// つまり、要素に入れる型は統一しなくてもOK
System.out.println( arylst.get( 1 ) );
// あいうえお
// むしろそれが危険……。
try
{
Integer integer = (Integer)arylst.get( 1 );
}
catch( ClassCastException e )
{
e.printStackTrace();
// java.lang.ClassCastException
// at Sample.main(Sample.java:30)
// Integerが入ってると思ったらString。
// J2SE5.0ならgenericsの使用をお勧めします。
// それ以外は配列を使用しましょう。
}
// 最悪、戻り値の型として「複数の値を返す」目的に
// 使われることもあります。
Sample sample = new Sample();
ArrayList badArrayList = sample.getDatas();
System.out.println( badArrayList.get( 0 ) );
// 文字列1
System.out.println( badArrayList.get( 1 ) );
// 200
// この方法は「複数の値を戻り値として返せる」というメリットに対して、
// 「メソッドの実装を見ないとどの要素にどの型の値が格納されているのかわからない」
// というデメリットが非常に大きいです。
// こういう使い方は絶対にしないようにしましょう。
}
/**
* ArrayListを戻り値として返す例(悪例です。やっちゃダメよ)。
*/
private ArrayList getDatas()
{
ArrayList arylst = new ArrayList();
// 0番目に文字列、1番目に整数値を格納します。
arylst.add( "文字列1" );
arylst.add( new Integer( 200 ) );
return arylst;
}
}
import java.util.ArrayList;
public class Sample
{
public static void main( String[] args )
{
// ArrayListを使用します。
ArrayList arylst = new ArrayList();
// 要素を追加します。
arylst.add( new Integer( 100 ) );
// 要素を取り出します。
System.out.println( arylst.get( 0 ) );
// 100
// 配列に変換もできます。
Integer[] integers = (Integer[])arylst.toArray( new Integer[0] );
System.out.println( integers[0] );
// 100
// add()の引数はObjectなので、クラスならなんでも受け取れます。
arylst.add( "あいうえお" );
// つまり、要素に入れる型は統一しなくてもOK
System.out.println( arylst.get( 1 ) );
// あいうえお
// むしろそれが危険……。
try
{
Integer integer = (Integer)arylst.get( 1 );
}
catch( ClassCastException e )
{
e.printStackTrace();
// java.lang.ClassCastException
// at Sample.main(Sample.java:30)
// Integerが入ってると思ったらString。
// J2SE5.0ならgenericsの使用をお勧めします。
// それ以外は配列を使用しましょう。
}
// 最悪、戻り値の型として「複数の値を返す」目的に
// 使われることもあります。
Sample sample = new Sample();
ArrayList badArrayList = sample.getDatas();
System.out.println( badArrayList.get( 0 ) );
// 文字列1
System.out.println( badArrayList.get( 1 ) );
// 200
// この方法は「複数の値を戻り値として返せる」というメリットに対して、
// 「メソッドの実装を見ないとどの要素にどの型の値が格納されているのかわからない」
// というデメリットが非常に大きいです。
// こういう使い方は絶対にしないようにしましょう。
}
/**
* ArrayListを戻り値として返す例(悪例です。やっちゃダメよ)。
*/
private ArrayList getDatas()
{
ArrayList arylst = new ArrayList();
// 0番目に文字列、1番目に整数値を格納します。
arylst.add( "文字列1" );
arylst.add( new Integer( 200 ) );
return arylst;
}
}
// Sample.java import java.util.ArrayList; public class Sample { public static void main( String[] args ) { // ArrayListを使用します。 ArrayList arylst = new ArrayList(); // 要素を追加します。 arylst.add( new Integer( 100 ) ); // 要素を取り出します。 System.out.println( arylst.get( 0 ) ); // 100 // 配列に変換もできます。 Integer[] integers = (Integer[])arylst.toArray( new Integer[0] ); System.out.println( integers[0] ); // 100 // add()の引数はObjectなので、クラスならなんでも受け取れます。 arylst.add( "あいうえお" ); // つまり、要素に入れる型は統一しなくてもOK System.out.println( arylst.get( 1 ) ); // あいうえお // むしろそれが危険……。 try { Integer integer = (Integer)arylst.get( 1 ); } catch( ClassCastException e ) { e.printStackTrace(); // java.lang.ClassCastException // at Sample.main(Sample.java:30) // Integerが入ってると思ったらString。 // J2SE5.0ならgenericsの使用をお勧めします。 // それ以外は配列を使用しましょう。 } // 最悪、戻り値の型として「複数の値を返す」目的に // 使われることもあります。 Sample sample = new Sample(); ArrayList badArrayList = sample.getDatas(); System.out.println( badArrayList.get( 0 ) ); // 文字列1 System.out.println( badArrayList.get( 1 ) ); // 200 // この方法は「複数の値を戻り値として返せる」というメリットに対して、 // 「メソッドの実装を見ないとどの要素にどの型の値が格納されているのかわからない」 // というデメリットが非常に大きいです。 // こういう使い方は絶対にしないようにしましょう。 } /** * ArrayListを戻り値として返す例(悪例です。やっちゃダメよ)。 */ private ArrayList getDatas() { ArrayList arylst = new ArrayList(); // 0番目に文字列、1番目に整数値を格納します。 arylst.add( "文字列1" ); arylst.add( new Integer( 200 ) ); return arylst; } }
「みだし」に含まれているページ
「解説」に含まれているページ
「サンプルプログラムとか」に含まれているページ
- .
- <%@ page import
- ArrayList
- Class
- Collection
- for
- IllegalArgumentException
- import
- IndexOutOfBoundsException
- Iterable<T>
- Iterator
- Jasper
- JasperException
- java.util
- List
- NoSuchElementException
- println
- size
- Vector
- イテレーター
- インデックスナンバー
- オートボクシング
- クロスサイトスクリプティング
- コレクション
- コレクションフレームワーク
- コンテナクラス
- サニタイジング
- シンボル
- バイナリーファイル
- パッケージも含めたクラス名
- パッケージ名
- ラッパー
- 可変長配列
- 名前空間
- 完全修飾クラス名
- 完全修飾名
- 戻り値
- 拡張for
- 木構造
- 未定義
- 標準入出力
- 要素