pi-8. コレクション,ジェネリクス

-- Views

January 26, 22

スライド概要

(Java の基本)
URL: https://www.kkaneko.jp/cc/pi/index.html

profile-image

金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko

シェア

埋め込む »CMSなどでJSが使えない場合

各ページのテキスト
1.

pi-8. コレクション,ジェネリクス (Java の基本) URL: https://www.kkaneko.jp/cc/pi/index.html 金子邦彦 1

2.

• オブジェクトの集まりを1つのオブジェクトとし て扱いたい → コレクション Java の標準機能(ArrayList, HashMap など) 実際に使うときの注意点を説明 2

3.

アウトライン 番号 項目 説明時間の 目安 8-1 Java のコレクション 16分 8-2 Java の基本データ型 9分 8-3 ジェネリクス 11分 各自、資料を読み返したり、課題に取り組んだりも行う この授業では、Java を用いて基礎を学び、マスターする 3

4.

全体まとめ • Java の基本データ型のそれぞれに,ラッパクラス がある. • Java では「基本データ型のコレクション」という ものはない ArrayList<int> はない 「ラッパクラスのコレクション」で代用 ArrayList<Integer> で代用 • Java の標準機能として,ArrayList,HashMap など,コレクションを扱うためのクラスがある. • Java のコレクションのクラスの基礎は,ジェネリ クスである 4

5.

j8-1. Java のコレク ション Java を基礎から学びた い人へ(入門者向け) 金子邦彦 5

6.

コレクションとは • コレクションは、オブジェクトの集まりを1つの オブジェクトとして扱いたいときに使う • Java の標準機能として,ArrayList,HashMap など,コレクションを扱うためのクラスがある 6

7.

リスト (List) とは 15 • • 8 6 32 23 順序のあるデータ 要素の削除,挿入によりサイズが増減する 7

8.

add メソッドは、要素の挿入 8

9.

Java Tutor Java などのプログラミング言語の体験, 演習ができるオンラインサービス ① ウェブブラウザで次の URL を開く http://www.pythontutor.com/ 9

10.

使用上の注意点1 • 次のような表示が出ることがある → 無視してよい 過去の文法ミスに関する確認表示 邪魔なときは「Close」 10

11.

使用上の注意点2 「please wait ... executing」のとき、10秒ほど待つ. → 混雑しているときは、 「Server Busy・・・」 というメッセージが出ることがある. 混雑している.少し(数秒から数十秒)待つと自 動で表示が変わる(変わらない場合には,操作を もう一度行ってみる) 11

12.

② 「Java Tutor」をクリック 12

13.

① Java Tutor で,次のソースコードを入れる 空のリストの 組み立て add メソッドは 要素の挿入 拡張 for 文で リストの要素をたどる 13

14.

② 実行.実行結果を確認 「Visualize Execution」をクリック, 「Last」をクリック. (あとで使うので、プログラムを消さないこと) 15, 8, 6, 32, 23 が表示される 14

15.

Java でのコレクションの使い方 • 型変数を使う(コレクションに入れるオブジェク トのクラスを示す) • 異なるクラスのオブジェクトをコレクションで扱 いたいときは、共通のスーパークラスを、型変数 に指定 15

16.

① Java Tutor で,次のソースコードを入れる 16

17.

② 実行.実行結果を確認 「Visualize Execution」をクリック, 「Last」をクリック. (あとで使うので、プログラムを消さないこと) 100, 200, 300, 400, 500 が表示される 17

18.

クラス階層のイメージ Java の標準機能のクラスの多くは、Object のサブクラス Object Byte Integer Boolean Character Short Float Long String Double String, Integer に共通するスーパークラスは Object 18

19.

① Java Tutor で,次のソースコードを入れる 19

20.

② 実行.実行結果を確認 「Visualize Execution」をクリック, 「Last」をクリック. (あとで使うので、プログラムを消さないこと) 100, hello が表示さ れる 20

21.

型変数は、毎回「Object」と書けば大丈夫ですか? いいえ。 ・プログラムが分かりにくくなる ・不便になる 型変数には、なるべく具体的なクラス名を書いた方がよいです. 21

22.

j8-2. Java の基本 データ型 Java を基礎から学びた い人へ(入門者向け) 金子邦彦 22

23.

Java のデータの種類 ・基本データ データの種類 基本データ型 サイズ 整数 byte 8 bit short 16 bit int 32 bit long 64 bit float 32 bit double 64 bit 文字 char 16 bit true/false boolean 浮動小数 ・基本データの配列 ・クラスに属するオブジェクト: Javaの標準機能のクラスは, String, ArrayList, HashMap クラスなど多種 23

24.

Java のコレクションは、オブジェクトのコレク ション • Java では「基本データ型のコレクション」という ものはない ArrayList<int> などはない データの種類 基本データ型 サイズ 整数 byte 8 bit short 16 bit int 32 bit long 64 bit float 32 bit double 64 bit 文字 char 16 bit true/false boolean 浮動小数 24

25.

Java のコレクションは、オブジェクトのコレク ション これは OK これは動かない 25

26.

Java のラッパクラス 基本データ型に対応したクラス ラッパクラス 基本データ型 -----------------------------Boolean boolean Character char Byte byte Short short Integer int Long long Float float Double double 26

27.

Java のコレクションは、オブジェクトのコレク ション • Java では「基本データ型のコレクション」という ものはない ArrayList<int> はない 「ラッパクラスのコレクション」で代用 ArrayList<Integer> で代用 27

28.

j8-3. Java のジェネ リクス Java を基礎から学びた い人へ(入門者向け) 金子邦彦 28

29.

Java のジェネリクスとは • クラス名の後に「<クラス名>」を指定して、種々 の制限などができる機能 ArrayList は,コレクションのクラス. ArrayList<Integer> は,m には整数しか入れない という制限 29

30.

Java のオブジェクトの生成 次の2つのオブジェクトを生成する Java プログラム a 1 2 b "xx" "yy" s e さまざまなクラスのオブジェクトが入る. s と e のクラスは同じに制限したい. • このとき,次のクラスを使うことにする クラス名 Pair 属性 s, e 30

31.

• クラス定義で「class Pair<T>」のような書き 方ができる. • このとき、コンストラクタで「new Pair<Integer>」のような書き方ができる. 31

32.

① Java Tutor で次のプログラムを実行しなさい. 結果を確認しなさい. 表示を確認 32

33.

② Java Tutor で次のプログラムを実行しなさい. 結果を確認しなさい. 表示を確認 33

34.
[beta]
ソースコード 8-1
import java.util.ArrayList;
import java.util.Iterator;
public class YourClassNameHere {
public static void main(String[] args) {
ArrayList<String> m = new ArrayList<String>();

m.add("15");
m.add("8");
m.add("6");

m.add("32");
m.add("23");
for(String s : m) {
System.out.println(s);
}
}
}

34

35.
[beta]
ソースコード 8-1
import java.util.ArrayList;
import java.util.Iterator;
public class YourClassNameHere {
public static void main(String[] args) {
ArrayList<Integer> m = new ArrayList<Integer>();

m.add(100);
m.add(200);
m.add(300);

m.add(400);
m.add(500);
for(Integer s : m) {
System.out.println(s);
}
}
}

35

36.
[beta]
ソースコード 8-3
class Pair<T> {
T s;
T e;
public Pair(T s, T e) {
this.s = s;
this.e = e;
}
public void print() {
System.out.println(s);
System.out.println(e);
}
}

public class YourClassNameHere {
public static void main(String[] args) {
Pair a = new Pair<Integer>(1, 2);
Pair b = new Pair<String>("xx", "yy");
a.print();
b.print();
}
}

36