---
title: pi-10. コレクション, ジェネリクス
tags:  #java #コレクション #基本データ型 #ジェネリクス #金子邦彦研究室  
author: [kunihikokaneko](https://convert.docswell.com/user/6674398749)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/3EKG3RNDJD.jpg?width=480
description: Java の基本（スライド資料とプログラム例）（全１７回）  https://www.kkaneko.jp/pro/pi/index.html  金子邦彦研究室ホームページ https://www.kkaneko.jp/index.html
published: January 26, 22
canonical: https://convert.docswell.com/s/6674398749/ZW4W1K-2022-01-26-125405
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/3EKG3RNDJD.jpg)

pi-10. コレクション，
ジェネリクス
トピックス：コレクション，基本データ型，ジェ
ネリクス
URL: https://www.kkaneko.jp/pro/pi/index.html
（Java の基本，スライド資料とプログラム例）
金子邦彦
1


# Page. 2

![Page Image](https://bcdn.docswell.com/page/L73NG8VP75.jpg)

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


# Page. 3

![Page Image](https://bcdn.docswell.com/page/87DW1M83JG.jpg)

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


# Page. 4

![Page Image](https://bcdn.docswell.com/page/VJP9QR8PE8.jpg)

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


# Page. 5

![Page Image](https://bcdn.docswell.com/page/2EVM5RNVEQ.jpg)

Java Tutor の起動
① ウェブブラウザを起動する
② Java Tutor を使いたいので，次の URL を開く
http://www.pythontutor.com/
③ 「Java」をクリック
⇒ 編集画面が開く
5


# Page. 6

![Page Image](https://bcdn.docswell.com/page/57GG6MK17L.jpg)

Java Tutor でのプログラム実行手順
(1)「Visualize Execution」をク
リックして実行画面に切り替える
(2)「Last」をクリック．
(4)「Edit this code」をク
(3) 実行結果を確認する． リックして編集画面に戻る
6


# Page. 7

![Page Image](https://bcdn.docswell.com/page/4EQX4RNN7P.jpg)

Java Tutor 使用上の注意点①
• 実行画面で，次のような赤の表示が出ることがある →
無視してよい
過去の文法ミスに関する確認表示
邪魔なときは「Close」
7


# Page. 8

![Page Image](https://bcdn.docswell.com/page/KJ46Q8G371.jpg)

Java Tutor 使用上の注意点②
「please wait ... executing」のとき，１０秒ほど待つ．
→ 混雑しているときは， 「Server Busy・・・」
というメッセージが出ることがある．
混雑している．少し（数秒から数十秒）待つと自
動で表示が変わる（変わらない場合には，操作を
もう一度行ってみる）
8


# Page. 9

![Page Image](https://bcdn.docswell.com/page/LE1VP2DZ7G.jpg)

10-1. Java のコレクション
9


# Page. 10

![Page Image](https://bcdn.docswell.com/page/GEWL2RY672.jpg)

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


# Page. 11

![Page Image](https://bcdn.docswell.com/page/47ZMDRXRE3.jpg)

リスト (List) とは
１５
•
•
８
６
３２
２３
順序のあるデータ
要素の削除，挿入によりサイズが増減する
11


# Page. 12

![Page Image](https://bcdn.docswell.com/page/YJ6N1R41JV.jpg)

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


# Page. 13

![Page Image](https://bcdn.docswell.com/page/GJ5548QLJ4.jpg)

演習
資料：14 ～ 15
【トピックス】
• リスト
13


# Page. 14

![Page Image](https://bcdn.docswell.com/page/9E2NVKP37R.jpg)

① Java Tutor のエディタで次のプログラムを入れる
空のリストの
組み立て
add メソッドは
要素の挿入
拡張 for 文で
リストの要素をたどる
14


# Page. 15

![Page Image](https://bcdn.docswell.com/page/D7YP3N587M.jpg)

② 実行し，結果を確認する
（あとで使うので、プログラムを消さないこと）
15, 8, 6, 32, 23
が表示される
「Visual Execution」をクリック．そして「Last」をクリック．結果を確認．
「Edit this code」をクリックすると，エディタの画面に戻る
15


# Page. 16

![Page Image](https://bcdn.docswell.com/page/VEN5VXN9J8.jpg)

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


# Page. 17

![Page Image](https://bcdn.docswell.com/page/Y79Y68R3E3.jpg)

演習
資料：18 ～ 19
【トピックス】
• リスト
• 型変数
17


# Page. 18

![Page Image](https://bcdn.docswell.com/page/G786Z8WLJD.jpg)

① Java Tutor のエディタで次のプログラムを入れる
18


# Page. 19

![Page Image](https://bcdn.docswell.com/page/L7L9DRNQER.jpg)

② 実行し，結果を確認する
（あとで使うので、プログラムを消さないこと）
100, 200, 300,
400, 500 が表示
される
「Visual Execution」をクリック．そして「Last」をクリック．結果を確認．
「Edit this code」をクリックすると，エディタの画面に戻る
19


# Page. 20

![Page Image](https://bcdn.docswell.com/page/4EMZPRQK7W.jpg)

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


# Page. 21

![Page Image](https://bcdn.docswell.com/page/PER61R86J9.jpg)

演習
資料：22 ～ 23
【トピックス】
• リスト
• 型変数
• クラス階層
21


# Page. 22

![Page Image](https://bcdn.docswell.com/page/P7XMYR8DJX.jpg)

① Java Tutor のエディタで次のプログラムを入れる
22


# Page. 23

![Page Image](https://bcdn.docswell.com/page/37KG3RKDED.jpg)

② 実行し，結果を確認する
（あとで使うので、プログラムを消さないこと）
100, hello が表
示される
「Visual Execution」をクリック．そして「Last」をクリック．結果を確認．
「Edit this code」をクリックすると，エディタの画面に戻る
23


# Page. 24

![Page Image](https://bcdn.docswell.com/page/LJ3NG8ZPJ5.jpg)

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


# Page. 25

![Page Image](https://bcdn.docswell.com/page/8JDW1MR3EG.jpg)

10-2. Java の基本データ型
25


# Page. 26

![Page Image](https://bcdn.docswell.com/page/VEP9QRWP78.jpg)

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 クラスなど多種
26


# Page. 27

![Page Image](https://bcdn.docswell.com/page/27VM5R8V7Q.jpg)

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


# Page. 28

![Page Image](https://bcdn.docswell.com/page/5JGG6M51JL.jpg)

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


# Page. 29

![Page Image](https://bcdn.docswell.com/page/47QX4RZNJP.jpg)

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


# Page. 30

![Page Image](https://bcdn.docswell.com/page/KE46Q833J1.jpg)

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


# Page. 31

![Page Image](https://bcdn.docswell.com/page/L71VP21ZJG.jpg)

10-3. Java のジェネリクス
31


# Page. 32

![Page Image](https://bcdn.docswell.com/page/G7WL2R86J2.jpg)

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


# Page. 33

![Page Image](https://bcdn.docswell.com/page/4JZMDR8R73.jpg)

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


# Page. 34

![Page Image](https://bcdn.docswell.com/page/YE6N1RP1EV.jpg)

• クラス定義で「class Pair&lt;T&gt;」のような書き
方ができる．
• このとき、コンストラクタで「new
Pair&lt;Integer&gt;」のような書き方ができる．
34


# Page. 35

![Page Image](https://bcdn.docswell.com/page/GE5548KLE4.jpg)

演習
資料：36 ～ 37
【トピックス】
• ジェネリクス
35


# Page. 36

![Page Image](https://bcdn.docswell.com/page/972NVKW3JR.jpg)

① Java Tutor のエディタで次のプログラムを入れ，
実行し，結果を確認する
表示を確認
「Visual Execution」をクリック．そして「Last」をクリック．結果を確認．
「Edit this code」をクリックすると，エディタの画面に戻る
36


# Page. 37

![Page Image](https://bcdn.docswell.com/page/DJYP3NL8JM.jpg)

② Java Tutor のエディタで次のプログラムを入れ，
実行し，結果を確認する
表示を確認
「Visual Execution」をクリック．そして「Last」をクリック．結果を確認．
「Edit this code」をクリックすると，エディタの画面に戻る
37


# Page. 38

![Page Image](https://bcdn.docswell.com/page/V7N5VX49E8.jpg)

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


# Page. 39

![Page Image](https://bcdn.docswell.com/page/YJ9Y68Q373.jpg)

関連ページ
• Java プログラミング入門
GDB online を使用
https://www.kkaneko.jp/pro/ji/index.html
• Java の基本
Java Tutor, GDB online を使用
https://www.kkaneko.jp/pro/pi/index.html
• Java プログラム例
https://www.kkaneko.jp/pro/java/index.html
39


# Page. 40

![Page Image](https://bcdn.docswell.com/page/GJ86Z8GLED.jpg)

ソースコード 10-1
import java.util.ArrayList;
import java.util.Iterator;
public class YourClassNameHere {
public static void main(String[] args) {
ArrayList&lt;String&gt; m = new ArrayList&lt;String&gt;();
m.add(&quot;15&quot;);
m.add(&quot;8&quot;);
m.add(&quot;6&quot;);
m.add(&quot;32&quot;);
m.add(&quot;23&quot;);
for(String s : m) {
System.out.println(s);
}
}
}
40


# Page. 41

![Page Image](https://bcdn.docswell.com/page/LJL9DRGQ7R.jpg)

ソースコード 10-1
import java.util.ArrayList;
import java.util.Iterator;
public class YourClassNameHere {
public static void main(String[] args) {
ArrayList&lt;Integer&gt; m = new ArrayList&lt;Integer&gt;();
m.add(100);
m.add(200);
m.add(300);
m.add(400);
m.add(500);
for(Integer s : m) {
System.out.println(s);
}
}
}
41


# Page. 42

![Page Image](https://bcdn.docswell.com/page/47MZPRLKJW.jpg)

ソースコード 10-3
class Pair&lt;T&gt; {
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&lt;Integer&gt;(1, 2);
Pair b = new Pair&lt;String&gt;(&quot;xx&quot;, &quot;yy&quot;);
a.print();
b.print();
}
}
42


