Download presentation
Presentation is loading. Please wait.
1
JAVA入門③ 配列とコレクション
2
簡単JAVA説明⑪ 配列 ★配列 1.配列とは? 「同じ型の値を複数まとめて記憶する という機能を持つもの」ということですが、
「同じ型の値を複数まとめて記憶する という機能を持つもの」ということですが、 イメージとしては、同じ型の入れ物を複数用意する というイメージです。 int int int
3
簡単JAVA説明⑪ 配列の準備 2.配列の準備 行うことは次の2つです。 ① 配列の宣言 ② 配列要素の確保
4
簡単JAVA説明⑪ 配列の宣言 3. ① 配列の宣言 構文 型 識別子[] 配列変数名 = new 型名[]; 例 int test[];
3. ① 配列の宣言 構文 型 識別子[] 配列変数名 = new 型名[]; 例 int test[]; test = new int[3]; int int int int
5
簡単JAVA説明⑪ 配列の宣言 解説① int test[]; は int型の箱を用意するつもり という宣言です。 次に
test = new int[3]; は 具体的に3個用意 するということです。 実際にできる箱は test[0]、 test[1]、 test[2] と名前がつけられます。 int int int int test[0] test[0] test[0]
6
簡単JAVA説明⑪ 配列の宣言 解説② 配列の番号は0からはじまりますので、 最大の番号は「要素数-1」です。
test[0]、test[1]、test[2]はありますが、test[3] はありません。
7
簡単JAVA説明⑪ 配列値代入 4.配列に値の代入 構文 配列変数名[添字] = 式; 例. int test[];
配列変数名[添字] = 式; 例. int test[]; test new = int[3]; test[0] =10; test[1] =20; test[2] =30;
8
簡単JAVA説明⑪ 配列の利用 5.配列の利用 繰り返し文との併用 配列の各要素に値代入の後、for文を用いて、値出力 Sample1.
配列添え字が0からなので、出力の順番はi+1とします。 i i+1 0 → 1番目 1 → 2番目 2 → 3番目 3 → 4番目 4 → 5番目
9
簡単JAVA説明⑪ 配列の利用 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;
10
簡単JAVA説明⑪ 配列の利用 // ループ変数iを0から(5-1)まで1ずつ変化させて、 // その間以下の処理を繰り返す
for (int i = 0; i < 5; i++) { // 配列testのi番目の要素の値を表示する。 System.out.println((i + 1) + "番目の人の点数は" + test[i] + "です。"); }
11
簡単JAVA説明⑪ 配列の利用 実行結果 1番目の人の点数は80です。 2番目の人の点数は60です。 3番目の人の点数は22です。
4番目の人の点数は50です。 5番目の人の点数は75です。
12
簡単JAVA説明⑪ よくある間違い ◎配列のよくある間違い 次はどこが間違いでしょう? int test[];
test = new int[5]; test[5] = 5;
13
簡単JAVA説明⑪ 答え test[5] はありません。
test[0]、 test[1]、 test[2]、 test[3]、 test[4] の5つが用意されます。
14
簡単JAVA説明⑪ 配列の宣言2 6.配列の宣言2 構文 型 配列変数名[] = new 型名[]; つまり、 int test[];
構文 型 配列変数名[] = new 型名[]; つまり、 int test[]; test = new int[3]; はひとつで int test[] = new int[3]; と書けます。
15
簡単JAVA説明⑪ 配列の初期化 7.配列の初期化 構文 配列 配列変数名[]={値1、値2、・・・}; 例
配列 配列変数名[]={値1、値2、・・・}; 例 int test [] = { 10, 20, 30 } ; つまり、初期化においては 宣言、要素の確保、値代入が一度で記述さ れていることになる。
16
簡単JAVA説明⑪ 変数への代入 8.配列変数(配列変数への代入) Sample5におきまして
int test1[]= new int[2]; test1[0]=10; test1[1]=20; int test2 [] ; test2 = test1 ; という代入構文では、 test1の配列とtest2の配列は 同じ配列を指し示します。 つまり、 test2はあくまで、 test1の配列を指ししめし ているにすぎません。(Sample6参照)
17
簡単JAVA説明⑪ 配列の応用 9.配列の応用 配列の長さを知る構文 配列変数名.length 例 test.length
=>Sample7
18
簡単JAVA説明⑪ 配列のソート 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)
19
簡単JAVA説明⑪ 多次元配列 11.多次元配列(2次元配列) 構文 型名 配列変数名[][];
型名 配列変数名[][]; 配列変数名 = new 型名[要素数][要素数]; 例 int test[][]; test = new int [][];
20
簡単JAVA説明⑪ 多次元配列 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]
21
簡単JAVA説明⑪ 多次元配列 初期化 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; と同じ意味。
22
簡単JAVA説明⑪ 配列まとめ 1.配列基本構文の理解 2.初期化 3.利用 4.応用(length、ソート) 5.代入 6.多次元配列
その① 型 識別子[] 配列変数名 = new 型名[]; その② 型 配列変数名[] = new 型名[]; 2.初期化 3.利用 4.応用(length、ソート) 5.代入 6.多次元配列
23
簡単JAVA説明⑫ コレクション(リスト、セットとマップ)
コレクション(リスト、セットと マップ) は、オブジ ェクトの集合を扱うための仕組みです。 次頁に一覧を与えます。 ※JDK1.4から1.5になりまして取り扱いがかわりました。 ★最後の頁の「Generic型について」も参照ください。
24
カテゴリ クラス List系 ArrayList LinkedList Vector Set系 HashSet TreeSet Map系
配列を扱います。 LinkedList 配列を扱います。挿入・削除が高速です。 Vector 配列を扱います。現在は推奨しません。(パフォーマンスが悪いため) Set系 HashSet 値の重複を許さない順不同の要素集合を扱います。 TreeSet 値の重複を許さないソートされたの要素集合を扱います。 Map系 HashMap キーと値の組からなる要素の集合を扱います。 TreeMap キーと値の組からなる要素の集合を扱います。キーでソートされています。
25
簡単JAVA説明⑫ ArrayListの例
import java.util.*; class ArrayListTest { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String> (); list.add("AAA"); list.add("BBB"); list.add("CCC"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); }
26
簡単JAVA説明⑫ 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 を追加する
27
簡単JAVA説明⑫ Linked List LinkedList も ArrayListと同じように使用することができます。挿入や削除を頻繁に行う場合は ArrayList よりも LinkedList の方が高速です。ただし、get() による参照は ArrayList の方が高速です。
28
簡単JAVA説明⑫ LinkedListの例
import java.util.*; class LinkedListTest { public static void main(String[] args) { LinkedList<String> list = new LinkedList<String>(); list.add("AAA"); list.add("BBB"); list.add("CCC"); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); }
29
LinkedList & ArrayList実行結果
AAA BBB CCC
30
簡単JAVA説明⑫ HashSet HashSet も配列を扱いますが、要素の重複が許されない、順序の保障が無い点が ArrayList や LinkedList と異なります。要素を参照する際には iterator を用います。 ※ iteratorにつきましては深く取り扱いません 興味ある方は質問してくださるか、説明のある本等ご参照ください。
31
簡単JAVA説明⑫ HashSetの例 import java.util.*; class HashSetTest {
public static void main(String[] args) { HashSet<String> set = new HashSet<String>(); set.add("AAA"); set.add("BBB"); set.add("CCC"); Iterator it = set.iterator(); while (it.hasNext()) { System.out.println(it.next()); }
32
簡単JAVA説明⑫ HashSetの例 解説
実行結果は下記のようになります。AAA を 2回 add() していますが、重複要素がひとつにマージされます。結果の順序は add() した順序に関係なくバラバラになります。 実行結果 CCC AAA BBB
33
簡単JAVA説明⑫ HashSetの使用 下記のメソッドが用意されています。
set.add(o) - オブジェクト o を配列の末尾に追加する set.clear() - 配列をクリアする set.contains(o) - オブジェクト o と等しい要素があるか調べる set.isEmpty() - 空かどうか調べる set.remove(o) - オブジェクト o にマッチする要素を削除する set.size() - 要素の個数を得る set.iterator() –反復子、統一的にループを構成可能
34
簡単JAVA説明⑫ TreeSet TreeSet も HashSetと同じように使用できます。要素が自動的にソートされる点が HashSet と異なります。
35
簡単JAVA説明⑫ TreeSetの例 import java.util.*; class TreeSetTest {
public static void main(String[] args) { TreeSet<String> set = new TreeSet<String>(); set.add("CCC"); set.add("AAA"); set.add("BBB"); Iterator it = set.iterator(); while (it.hasNext()) { System.out.println(it.next()); }
36
TreeSetの実行結果 AAA BBB CCC
37
簡単JAVA説明⑫ HashMap HashMap は、名前(キー)と値の組み合わせを要素として持つ配列です。
38
簡単JAVA説明⑫ HashMapの例 import java.util.*; class HashMapTest {
public static void main(String[] args) { Map<String, Integer> m = new HashMap<String, Integer>(); m.put("AAA",1); m.put("BBB",2); m.put("CCC",3); //キーから値を取得して表示 System.out.println(m.get("AAA")); System.out.println(m.get("BBB")); System.out.println(m.get("CCC")); }
39
HashMap 実行結果 1 2 3
40
簡単JAVA説明⑫ TreeMap TreeMap も HashMapと同じように使用できます。要素がキーによって自動的にソートされる点が HashMap と異なります。 次のサンプルにもありますようにiteratorを用いた表示も可能です。
41
簡単JAVA説明⑫ TreeMapの例 import java.util.*; class TreeMapTest {
public static void main(String[] args) { TreeMap<String, Integer> map = new TreeMap<String, Integer>(); map.put("AAA", 1); map.put("BBB", 2); map.put("CCC", 3); Iterator it = map.keySet().iterator(); while (it.hasNext()) { Object o = it.next(); System.out.println(o + " = " + map.get(o)); }
42
TreeMap 実行結果 AAA = 1 BBB = 2 CCC = 3
43
Generic型について 例で用いました、
ArrayList<String> list = new ArrayList<String> (); で<String>は見慣れない記法かと思いますが、これは 「要素がString 型のArrayList」 という意味になります。 ArrayList<String>をパラメータ付き型、 Stringを型パラ メータといいます。この場合、コレクション・オブジェクト に格納するデータの型を限定することを可能としてお ります。コレクションから取り出すデータ型にもその型 が適用されます。型パラメータを使って型の宣言がで きる機能のことをGenericsといいます。
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.