ArrayList

import java.util.ArrayList;

public class Collection {

	public static void main(String[] args) {

		// <>の中は ArrayList に入れる要素の型
		ArrayList str = new ArrayList<>();
		// 何も入ってなくてもメソッドは使える
		System.out.println(str.size());
		System.out.println(str.contains("abc"));
		// でも入っていない要素を指定するとダメ!エラー
//		System.out.println(str.remove(0));
		// 要素を追加していく。追加した順がindex順
		str.add("aaa");
		str.add("bbb");
		str.add("ccc");
		str.add("ddd");
		str.add("eee");
		System.out.println(str.size());
		// 中身を出力したいだけならこれでOK
		System.out.println(str);
		// index 2 に挿入。配列と同じく index は 0 からなので"fff"は3個目の要素になる
		str.add(2,"fff");
		// index 4 を上書き
		str.set(4,"ggg");
		System.out.println(str);

		// "ccc"があるか確認して、あったら消す
		String strccc = "ccc";
		if(str.contains(strccc)) {
			// indexOf()で index を取得して remove() で削除
			str.remove(str.indexOf(strccc));
		}
		System.out.println("--- cccを削除 ---");
		System.out.println(str);

		// ランダムに並べ替える
		for(int i = str.size(); i > -1; i--) {
			// 乱数取得
			int r = (int)(Math.random() * i);
			// ランダムで選んだ要素を後ろに
			str.add(str.get(r));
			// 元の要素は削除
			str.remove(r);
		}
		System.out.println("--- 並べ替え ---");
		System.out.println(str);
		str.clear();
		// 中身が空でもエラーにならない
		System.out.println("--- 空っぽ ---");
		System.out.println("isEmpty():" + str.isEmpty());
		System.out.println(str);

		// インスタンスをぶち込む
		System.out.println("--- インスタンス ---");
		ArrayList ar = new ArrayList<>();
		// Arr を5個加える
		for(int i = 0; i < 5; i++) ar.add(new Arr());
		// すべてのインスタンスの num を -1 していき num < 1 なら削除していく
		while(ar.size() > 0) {
			for(int i = 0; i < ar.size(); i++) {
				// ar.get(i) は Arr のインスタンスなので、その後ろに .num でフィールドをいじれる
				ar.get(i).num--;
				if(ar.get(i).num < 1) {
					// num < 1 なら削除
					ar.remove(i);
					// 削除されて次の要素が前へ1つずつずれるので i を -1 している
					i--;
				}
			}
			for(int i = 0; i < ar.size(); i++) {
				System.out.print(ar.get(i).num + " ");
			}
			System.out.println();
		}
	}
}

class Arr {
	int num = (int)(Math.random() * 10) + 1;
}