JAVA 入門 3 配列とコレクション
配列 1. 配列とは? 簡単 JAVA 説明 11 配列 同じ型の値を複数まとめて記憶する という機能を持つもの ということですが イメージとしては 同じ型の入れ物を複数用意する というイメージです int int int
簡単 JAVA 説明 11 配列の準備 2. 配列の準備 行うことは次の 2 つです 1 配列の宣言 2 配列要素の確保
簡単 JAVA 説明 11 配列の宣言 3. 1 配列の宣言構文型識別子 [] 配列変数名 = new 型名 []; 例 int test[]; test = new int[3]; int int int int
解説 1 簡単 JAVA 説明 11 配列の宣言 int test[]; は int 型の箱を用意するつもり という宣言です 次に test = new int[3]; は具体的に 3 個用意 するということです 実際にできる箱は test[0] test[1] test[2] と名前がつけられます int int int int test[0] test[0] test[0]
解説 2 簡単 JAVA 説明 11 配列の宣言 配列の番号は 0 からはじまりますので 最大の番号は 要素数 -1 です test[0] test[1] test[2] はありますが test[3] はありません
簡単 JAVA 説明 11 配列値代入 4. 配列に値の代入 構文 配列変数名 [ 添字 ] = 式 ; 例. int test[]; test new = int[3]; test[0] =10; test[1] =20; test[2] =30;
簡単 JAVA 説明 11 配列の利用 5. 配列の利用繰り返し文との併用配列の各要素に値代入の後 for 文を用いて 値出力 Sample1. 配列添え字が 0 からなので 出力の順番は i+1 とします i i+1 0 1 番目 1 2 番目 2 3 番目 3 4 番目 4 5 番目
簡単 JAVA 説明 11 配列の利用 class Sample01 { public static void main(string[] args) { // 整数の配列型の変数 test を宣言 int[] test; // 整数のサイズ 5 の配列を作成し 参照を test に割り当てる test = new int[5]; // 配列 test の各要素に点数を代入する test[0] = 80; test[1] = 60; test[2] = 22; test[3] = 50; test[4] = 75;
} 簡単 JAVA 説明 11 配列の利用 // ループ変数 i を 0 から (5-1) まで 1 ずつ変化させて // その間以下の処理を繰り返す for (int i = 0; i < 5; i++) { // 配列 test の i 番目の要素の値を表示する System.out.println((i + 1) + " 番目の人の点数は " + test[i] + " です "); } }
簡単 JAVA 説明 11 配列の利用 実行結果 1 番目の人の点数は 80 です 2 番目の人の点数は 60 です 3 番目の人の点数は 22 です 4 番目の人の点数は 50 です 5 番目の人の点数は 75 です
簡単 JAVA 説明 11 よくある間違い 配列のよくある間違い 次はどこが間違いでしょう? int test[]; test = new int[5]; test[5] = 5;
答え test[5] はありません 簡単 JAVA 説明 11 test[0] test[1] test[2] test[3] test[4] の 5 つが用意されます
簡単 JAVA 説明 11 配列の宣言 2 6. 配列の宣言 2 構文 型配列変数名 [] = new 型名 []; つまり int test[]; はひとつで test = new int[3]; int test[] = new int[3]; と書けます
簡単 JAVA 説明 11 配列の初期化 7. 配列の初期化 構文 配列配列変数名 []={ 値 1 値 2 }; 例 int test [] = { 10, 20, 30 } ; つまり 初期化においては 宣言 要素の確保 値代入が一度で記述さ れていることになる
簡単 JAVA 説明 11 変数への代入 8. 配列変数 ( 配列変数への代入 ) Sample5 におきまして int test1[]= new int[2]; test1[0]=10; test1[1]=20; int test2 [] ; test2 = test1 ; という代入構文では test1 の配列と test2 の配列は同じ配列を指し示します つまり test2 はあくまで test1 の配列を指ししめしているにすぎません (Sample6 参照 )
簡単 JAVA 説明 11 配列の応用 9. 配列の応用 配列の長さを知る構文 配列変数名.length 例 test.length =>Sample7
簡単 JAVA 説明 11 配列のソート 10. 応用例 配列のソート test[0]=22 test[1]=80 test[2]=57 test[3]=60 test[4]=50 の場合 test[0] と test[1] を比較 多きければ入れ替え temp=test[0]; test[0]= test[1]; から test[0]=80 test[1]=22 以下これを繰り返す (=>Sample9)
簡単 JAVA 説明 11 多次元配列 11. 多次元配列 (2 次元配列 ) 構文 型名配列変数名 [][]; 配列変数名 = new 型名 [ 要素数 ][ 要素数 ]; 例 int test[][]; test = new int [][];
簡単 JAVA 説明 11 多次元配列 2 次元のイメージ int test[][] = new int [4][5]; の場合 [0][0] [0][1] [0][2] [0][3] [0][4] [1][0] [1][1] [1][2] [1][3] [1][4] [2][0] [2][1] [2][2] [2][3] [2][4] [3][0] [3][1] [3][2] [3][3] [3][4]
簡単 JAVA 説明 11 多次元配列 初期化 int test [][] = { {10 20} {30 40} }; は int test[][] = new int[2][2]; test[0][0] =10; test[0][1] =20; test[1][0] =40; test[1][1] =40; と同じ意味
簡単 JAVA 説明 11 配列まとめ 1. 配列基本構文の理解その 1 型識別子 [] 配列変数名 = new 型名 []; その 2 型配列変数名 [] = new 型名 []; 2. 初期化 3. 利用 4. 応用 (length ソート ) 5. 代入 6. 多次元配列
簡単 JAVA 説明 12 コレクション ( リスト セット ) とマップ コレクション ( リスト セット ) やマップは オブジ ェクトの集合を扱うための仕組みです 次頁に一覧を与えます
カテゴリ List 系 Set 系 Map 系 クラス ArrayList LinkedList Vector HashSet TreeSet HashMap TreeMap 配列を扱います 配列を扱います 挿入 削除が高速です 配列を扱います 現在は推奨しません ( パフォーマンスが悪いため ) 値の重複を許さない順不同の要素集合を扱います 値の重複を許さないソートされたの要素集合を扱います キーと値の組からなる要素の集合を扱います キーと値の組からなる要素の集合を扱います キーでソートされています
簡単 JAVA 説明 12 ArrayList の例 import java.util.*; class ArrayListTest { public static void main(string[] args) { ArrayList list = new ArrayList(); list.add("aaa"); list.add("bbb"); list.add("ccc"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } }
簡単 JAVA 説明 12 ArrayList の使用 ArrayList は配列を扱う一般的なクラスです 以下のメソッドが用意されています List.add(o) - オブジェクト o を配列の末尾に追加する List.add(n, o) - オブジェクトを n で指定した場所に追加する List.get(n) - n 番目の要素を得る List.remove(n) - n 番目の要素を削除する List.set(n, o) - n 番目の要素をオブジェクト o で置き換える List.size() - 要素の個数を得る List.isEmpty() - 空かどうか調べる List.indexOf(o) - オブジェクト o と等しい要素のインデックスを探す List.contains(o) - オブジェクト o と等しい要素があるか調べる List.addAll(list2) - 配列の末尾に配列 list2 を追加する
簡単 JAVA 説明 12 LinkedList LinkedList も ArrayList と同じように使用することができます 挿入や削除を頻繁に行う場合は ArrayList よりも LinkedList の方が高速です ただし get() による参照は ArrayList の方が高速です
簡単 JAVA 説明 12 LinkedList の例 import java.util.*; class LinkedListTest { public static void main(string[] args) { LinkedList list = new LinkedList(); list.add("aaa"); list.add("bbb"); list.add("ccc"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } } }
AAA BBB CCC LinkedList & ArrayList 実行結果
簡単 JAVA 説明 12 HashSet HashSet も配列を扱いますが 要素の重複が許されない 順序の保障が無い点が ArrayList や LinkedList と異なります 要素を参照する際には Iterator を用います
簡単 JAVA 説明 12 HashSet の例簡単 JAVA 説明 12 HashSet の例 import java.util.*; class HashSetTest { public static void main(string[] args) { HashSet set = new HashSet(); set.add("aaa"); set.add("bbb"); set.add("ccc"); set.add("aaa"); Iterator it = set.iterator(); while (it.hasnext()) { System.out.println(it.next()); } } }
簡単 JAVA 説明 12 HashSet の例 解説実行結果は下記のようになります AAA を 2 回 add() していますが 重複要素がひとつにマージされます 結果の順序は add() した順序に関係なくバラバラになります 実行結果 AAA CCC BBB
簡単 JAVA 説明 12 HashSet の使用 下記のメソッドが用意されています set.add(o) - オブジェクト o を配列の末尾に追加する set.clear() - 配列をクリアする set.contains(o) - オブジェクト o と等しい要素があるか調べる set.isempty() - 空かどうか調べる set.remove(o) - オブジェクト o にマッチする要素を削除する set.size() - 要素の個数を得る
簡単 JAVA 説明 12 TreeSet TreeSet も HashSet と同じように使用できます 要素が自動的にソートされる点が HashSet と異なります
簡単 JAVA 説明 12 TreeSet の例簡単 JAVA 説明 12 TreeSet の例 import java.util.*; class TreeSetTest { public static void main(string[] args) { TreeSet set = new TreeSet(); set.add("ccc"); set.add("aaa"); set.add("bbb"); set.add("aaa"); Iterator it = set.iterator(); while (it.hasnext()) { System.out.println(it.next()); } } }
TreeSet の実行結果 AAA BBB CCC
簡単 JAVA 説明 12 HashMap HashMap は 名前 ( キー ) と値の組み合わせを要素として持つ配列です
簡単 JAVA 説明 12 HashMap の例 import java.util.*; class HashMapTest { } public static void main(string[] args) { } HashMap map = new HashMap(); map.put("name", "Tanaka"); map.put("age", new Integer(26)); System.out.println("Name = " + map.get("name")); System.out.println("Age = " + map.get("age"));
Name = Tanaka Age = 26 HashMap の実行例
簡単 JAVA 説明 12 TreeMap TreeMap も HashMap と同じように使用できます 要素がキーによって自動的にソートされる点が HashMap と異なります
簡単 JAVA 説明 12 TreeMap の例 import java.util.*; class TreeMapTest { public static void main(string[] args) { TreeMap map = new TreeMap(); map.put("name", "Tanaka"); map.put("age", new Integer(26)); Iterator it = map.keyset().iterator(); while (it.hasnext()) { Object o = it.next(); System.out.println(o + " = " + map.get(o)); } } }
Age = 26 Name = Tanaka TreeMap の実行例