JAVA ArrayList

<FONT color="#ff0000">■ArrayListの宣言と初期化</font>
**ArrayList<型> 変数名 = new ArrayList<型>();**

<FONT color="#ff0000">■リスト内の指定された位置にある要素を返します。</font>
**get
public E get(int index);**

<FONT color="#ff0000">■リストの最後に、指定された要素を追加します。</font>
**add
public boolean add(E o);**

■補足
「E」は(Element:要素)
「T」は(Type:型)


```java
import java.util.ArrayList;

public class Test04 {
	public static void main(String[] args) {
		ArrayList<String> names = new ArrayList<String>();
		names.add("田中");
		names.add("松田");
		names.add("前田");

		System.out.println(names.get(1));

	}

}
```

■実行結果
松田

##Generics
![ArrayList.png](https://qiita-image-store.s3.amazonaws.com/0/95187/2412a498-ce55-3a4d-c859-9e492c4a0f55.png)

#ラッパークラスをプリミティブ型に自動変換
##AutoBoxing機能によりIntegerがIntに自動変換される

■例

```java
		ArrayList<Integer> points = new ArrayList<Integer>();
		points.add(45);
		points.add(18);
		points.add(87);
		for (int i : points) {
			System.out.println(i);
```

■実行結果
45
18
87
![changeToWrapperClass.png](https://qiita-image-store.s3.amazonaws.com/0/95187/14106a87-228e-1f6f-be7d-0a908b40b448.png)

##AutoBoxingによりラッパークラスCharacterがプリミティブ型charに自動変換される

■例

```java
		ArrayList<Character> moji = new ArrayList<Character>();
		moji.add('A');
		moji.add('B');
		for (char i : moji) {
			System.out.println(i);
		}
```

■実行結果
A
B

##ArrayList 例(参考程度)
■Test041.java

```java
import java.util.ArrayList;
import java.util.Iterator;

public class Test041 {
	public static void main(String[] args) {
		// AutoBoxingによりラッパークラスCharacterがプリミティブ型charに自動変換される
		ArrayList<Character> moji = new ArrayList<Character>();
		moji.add('A');
		moji.add('B');
		moji.add('C');
		Iterator<Character> it = moji.iterator();
		System.out.println("イテレータを用いたリスト要素の取出し");
		while (it.hasNext()) {
			Character e = it.next();
			System.out.println(e);
		}
		System.out.println(moji.toString());

		System.out.println("拡張for文");
		for (char i : moji) {
			System.out.println(i);
		}

		System.out.println("ArrayListを使ったコード");
		for (int i = 0; i < moji.size(); i++) {
			System.out.println(moji.get(i));

		}

		
		for (char i : moji) {
			System.out.println("拡張for文→" + i);

		}
		moji.add(0, 'C');
		System.out.println("AをCに挿入した→" + moji.get(0));

		moji.set(1, 'D');
		System.out.println("BをDに代入した→" + moji.get(1));

		System.out.println("格納されてる要素数を返す→" + moji.size());
		System.out.println("要素を順に処理するイテレータを返す→" + moji.iterator());
		System.out.println("要素数が0であるか判定する→" + moji.isEmpty());
		System.out.println("'D'は何番目の位置に含まれているか調べる→" + moji.get(1) + "は"
				+ moji.indexOf('D') + "番目の位置に含まれている");

		System.out.println("0番目の値のremove前は" + moji.get(0));
		moji.remove(0);
		System.out.println("0番目の値Cのremove後は" + moji.get(0)
				+ "。なぜなら削除したら前に詰められるから");
		System.out.println(moji.get(0));
		// ;; moji.get(1));
		System.out.println("文字すなわち char どうしを演算子で結合しようとしても、"
				+ "char は 文字コード すなわち 数値 として扱われるから" + moji.get(0) + moji.get(1)
				+ "とDBと表示されず、数値で表示されてしまう。");
		System.out.println(moji.get(0) + moji.get(1));

		System.out.println("メソッドは、オブジェクトを文字列として返します");
		System.out.println(new StringBuilder().append(moji.get(0))
				.append(moji.get(1)).toString());

		StringBuilder sb = new StringBuilder();
		sb.append(moji.get(0));
		sb.append(moji.get(1));
		String sb2 = sb.toString();
		System.out.println("省略していない→" + sb2);


		System.out.println(moji.get(0) + "と" + moji.get(1));

		System.out.println("ArrayList、mojiの要素数はゼロであるか判定した結果→" + moji.isEmpty());
		System.out.println("Dが含まれているか→" + moji.contains('D'));

	}

}
```

■Test041.java 実行結果
イテレータを用いたリスト要素の取出し
A
B
C
[A, B, C]
拡張for文
A
B
C
ArrayListを使ったコード
A
B
C
拡張for文→A
拡張for文→B
拡張for文→C
AをCに挿入した→C
BをDに代入した→D
格納されてる要素数を返す→4
要素を順に処理するイテレータを返す→java.util.ArrayList$Itr@19e0bfd
要素数が0であるか判定する→false
'D'は何番目の位置に含まれているか調べる→Dは1番目の位置に含まれている
0番目の値のremove前はC
0番目の値Cのremove後はD。なぜなら削除したら前に詰められるから
D
文字すなわち char どうしを演算子で結合しようとしても、char は 文字コード すなわち 数値 として扱われるからDBとDBと表示されず、数値で表示されてしまう。
134
メソッドは、オブジェクトを文字列として返します
DB
省略していない→DB
DとB
ArrayList、mojiの要素数はゼロであるか判定した結果→false
Dが含まれているか→true
 
##ArrayList 例②(参考程度)

■Test04.java

```java
import java.sql.Date;
import java.util.ArrayList;

public class Test04 {
	public static void main(String[] args) {
		ArrayList<String> names = new ArrayList<String>();
		names.add("田中");
		names.add("松田");
		names.add("前田");

		System.out.println(names.get(1));

		String a = names.get(0);
		System.out.println(a);

		ArrayList<String> countries = new ArrayList<String>();
		countries.add("Sweden");
		countries.add("Greece");
		countries.add("Bulgaria");
		countries.add("Lithuania");
		countries.add("Latvija");

		String country = countries.get(3);
		System.out.println(country);
		System.out.println(countries.get(1));

		String b = countries.get(0);
		System.out.println(b);

		// 整数を配列に格納
		ArrayList<Integer> number = new ArrayList<Integer>();
		number.add(13);
		number.add(15);
		System.out.println(number.get(0));

		// 小数点を配列に格納
		ArrayList<Double> decimal = new ArrayList<Double>();
		decimal.add(3.15);
		decimal.add(0.12);
		decimal.add(7.7);
		System.out.println(decimal.get(1));

		// 1文字だけを配列に格納
		ArrayList<Character> letter = new ArrayList<Character>();
		letter.add('A');
		letter.add('N');
		letter.add('O');
		System.out.println(letter.get(2));

		// ある日付を配列に格納
		Date date = new Date(1316622225935L);
		Date date1 = new Date(31920291332L);
		ArrayList<Date> dateArray = new ArrayList<Date>();
		dateArray.add(date);
		dateArray.add(date1);
		System.out.println(dateArray.get(1));
		System.out.println(dateArray.get(0));

		// AutoBoxing機能によりIntegerがIntに自動変換される
		ArrayList<Integer> points = new ArrayList<Integer>();
		points.add(45);
		points.add(18);
		points.add(87);
		for (int i : points) {
			System.out.println(i);
		}

		ArrayList<Integer> points1 = new ArrayList<Integer>();
		points1.add(10);
		points1.add(11);
		points1.add(12);
		for (Integer i : points1) {
			System.out.println(i);
		}
		// AutoBoxingによりラッパークラスCharacterがプリミティブ型charに自動変換される
		ArrayList<Character> moji = new ArrayList<Character>();
		moji.add('A');
		moji.add('B');
		for (char i : moji) {
			System.out.println(i);
		}
		moji.add(0, 'C');
		System.out.println("AをCに挿入した→" + moji.get(0));

		moji.set(1, 'D');
		System.out.println("BをDに代入した→" + moji.get(1));

		System.out.println("格納されてる要素数を返す→" + moji.size());
		System.out.println("要素を順に処理するイテレータを返す→" + moji.iterator());
		System.out.println("要素数が0であるか判定する→" + moji.isEmpty());
		System.out.println("'D'は何番目の位置に含まれているか調べる→" + moji.get(1) + "は"
				+ moji.indexOf('D') + "番目の位置に含まれている");

		System.out.println(moji.get(0));
		moji.remove(0);
		System.out.println(moji.get(0) + moji.get(1));
	}

}
```

■Test04.java 実行結果
松田
田中
Lithuania
Greece
Sweden
13
0.12
O
1971-01-05
2011-09-22
45
18
87
10
11
12
A
B
AをCに挿入した→C
BをDに代入した→D
格納されてる要素数を返す→3
要素を順に処理するイテレータを返す→java.util.ArrayList$Itr@19e0bfd
要素数が0であるか判定する→false
'D'は何番目の位置に含まれているか調べる→Dは1番目の位置に含まれている
C
134