こんばんわ。
最近、後輩にJavaを教えていて皆が「????」ってなるArrayListについて
ですが、プログラムの中で変数を入れる器(入れ物)って言うイメージは
やっぱり経験しないとあったまらない物ですね
何度かやって見るとイメージは出来てきますので安心してください
プログラムの考え方も結局は反復練習PDCAですからねぇ★
以下がArrayListのサンプルです…
import java.util.ArrayList;
import java.util.Iterator;
/**
* ArrayListのサンプルソースです。
*/
public class ArrayListSample {
public static void main(String[] args) {
//ArrayListはjava.utilパッケージにあります。
//使うときには当たり前ですがnewします。
//デフォルトのコンストラクタは10件分の領域を確保します。
//上限を以上増えた際には50%ずつ拡張されます。
ArrayList myList = new ArrayList();
//ArrayListは分かりやすく言えば配列のように扱えるクラスだと思ってください。
//まずはArrayListに入れるものを宣言しておきましょう。
Integer inte1 = new Integer(5);
Integer inte2 = new Integer(15);
Integer inte3 = new Integer(25);
//addメソッドでArrayListの一番最後の要素に追加していきます。
//以下のコードでArrayListに3件データが追加されます。
myList.add(inte1);
myList.add(inte2);
myList.add(inte3);
//sizeメソッドで、ArrayListの件数を測ります。
//sizeメソッドの戻り値はint型です。
int size = myList.size();
System.out.println("件数は" + size + "件");
//当然intに代入しなくても件数は見れます。
System.out.println("件数は" + myList.size() + "件だって");
//getメソッドでArrayListの中身を取得出来ます。
//ただし、戻り値はObject型です。
System.out.println("先頭の中身は" + myList.get(0) + "ですよ。");
//見た目はIntegerですがIntegerの持つメソッド
//例えばdoubleValue();メソッドを利用しようとしても
//コンパイルできません。
//その際にはキャストが必要です。
//型 変数名 = (キャストする型)リストオブジェクト.get(n番目)
//と書きます。
Integer outInte = (Integer)myList.get(0);
System.out.println("キャストしたよ。" + outInte.doubleValue() + "ですよ。");
//ArrayListの中から全ての要素を取り出したいときは
//ループを利用します。
//ついでに合計してみましょう。
//間違ってもループ中に合計用の変数を宣言しないこと・・・
Integer sumInte = new Integer(0);
for(int i = 0 ; i < myList.size() ; i++){
//i番目からgetします。ループ中のi番目の考え方は
//pgの基本の考え方なので重要!
//分からないときは数学のn番目を思い出そう。
Integer forInte = (Integer)myList.get(i);
System.out.println("for文で出したよ。"+ forInte);
sumInte = sumInte + forInte;
}
System.out.println("合計を出したよ。"+ sumInte);
//Iteratorを利用することも出来ます。
//Iteratorは反復するという意味です。
//IteratorもArrayList同様java.utilパッケージにあります。
//iteratorメソッドで反復子を取得します。
Iterator ite = myList.iterator();
//こちらもループが使えます。
//while分で反復子内にオブジェクトが存在する間繰り返します。
while(ite.hasNext()){
//nextメソッドで順番に取り出します。
//こちらもObject型で戻ってきちゃうのでキャストは必要です。
Integer iteInte = (Integer)ite.next();
System.out.println("Iteratorで出したよ。"+ iteInte);
}
}
}
実行結果は
件数は3件
件数は3件だって
先頭の中身は5ですよ。
キャストしたよ。5.0ですよ。
for文で出したよ。5
for文で出したよ。15
for文で出したよ。25
合計を出したよ。45
Iteratorで出したよ。5
Iteratorで出したよ。15
Iteratorで出したよ。25
となります★