■ArrayListの宣言と初期化
ArrayList<型> 変数名 = new ArrayList<型>();
■リスト内の指定された位置にある要素を返します。
get
public E get(int index);
■リストの最後に、指定された要素を追加します。
add
public boolean add(E o);
■補足
「E」は(Element:要素)
「T」は(Type:型)
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
ラッパークラスをプリミティブ型に自動変換
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);
AutoBoxingによりラッパークラスCharacterがプリミティブ型charに自動変換される
■例
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
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
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