コレクション・フレームワークのデータ構造

Javaにおけるデータ型と例外処理

Jim White

Java Instructor

フレームワークとは

  • フレームワークは再利用可能な型の集合で、汎用機能を提供
    • 型の例: クラス、インターフェース
    • アプリ品質を向上
    • 一から作る手間を削減
  • Java では1つ以上のパッケージで提供
  • 利用ガイドラインと規約が付属

フレームワークは汎用機能を持つ既成コードの集合

1 Photo by Ashkan Forouzani on Unsplash
Javaにおけるデータ型と例外処理

Java の型

Java のは2種類:

  • プリミティブ
    • byte, short, int, long, float, double, char, boolean
  • 参照
    • クラス
    • インターフェース
    • 列挙型(enum)
    • 配列
    • ...
Javaにおけるデータ型と例外処理

Collections Framework とは

  • Collections Framework: Java 組み込みの汎用データ構造群
    • オブジェクトの集まりを保存・操作するための型パッケージ
  • java.util パッケージに定義
    • 使うには import が必要
Javaにおけるデータ型と例外処理

配列はどうか?

  • Java の配列はオブジェクトやプリミティブの集まりを保持
    • コレクションは別のデータ構造群を提供
  • どちらにも長所短所あり
配列 コレクション
サイズ固定 動的サイズ(伸縮)
プリミティブまたはオブジェクトを格納 オブジェクトのみ格納
同質(同一型のみ) 異質(異なる型も可)
[] で要素アクセス メソッドでアクセス
{} で初期化の特別構文 new を使用(特別な初期化構文なし)
Javaにおけるデータ型と例外処理

コレクション・フレームワークの種類

  • コレクション・フレームワークは基本2種類: CollectionMap
    • 2つのインターフェースで表現: java.util.Collectionjava.util.Map
    • どちらも複数の実装クラスあり
  • import java.util.*; で任意の型を利用

コレクション・フレームワークは Collection と Map の2種類

Javaにおけるデータ型と例外処理

Collection

  • Collection は多様なオブジェクト群を定義
    • 追加のインターフェースで分類
  • 順序ありの集まり: List
  • 順不同の集まり: Set
  • 先入れ先出し: Queue
    • 銀行やチケット売り場の列のように動作
  • どの Collection も .add(Object).remove(Object) で更新

Collection には List, Set, Map が含まれる

Javaにおけるデータ型と例外処理

Map

  • Map は電話帳や辞書のように動作
    • 「キー」オブジェクト -> 「値」オブジェクト
    • 電話帳: 名前 -> 電話番号
    • 辞書: 単語 -> 定義
  • キーで Map を操作
    • .put(Object key, Object value) で追加
    • .remove(Object key) で削除
  • HashMap など多様な Map 実装

Map は電話帳や辞書のように動作

Javaにおけるデータ型と例外処理

ジェネリクス

  • Collection と Map は「パラメータ化」される
    • Java のジェネリクスで要素型を指定
    • 構文: <Class>(パラメータ化型)
      • < > はダイヤモンド演算子
ArrayList<String> list = new ArrayList<String>();  // ジェネリクスで構築
Javaにおけるデータ型と例外処理

ジェネリクスと型安全性

  • ジェネリクスで型安全性が向上
    • CollectionMap の要素型を制限
ArrayList<String> list = new ArrayList<String>();
list.add("hello");  // String の追加はOK
list.add(new Integer(5));  // Integer を追加しようとするとコンパイルエラー
Javaにおけるデータ型と例外処理

ジェネリクスを使わない場合

ArrayList list2 = new ArrayList();  // 合法だが型が特定されない

list2.add("hello");                 // あらゆる型を追加可能になる
list2.add(new Integer(5));
Javaにおけるデータ型と例外処理

変数の宣言と代入

  • 変数の宣言と代入は分けてもよい
ArrayList<String> list = new ArrayList<String>(); // 1行で宣言と代入

ArrayList<String> list2;     // 変数の宣言...
list2 = new ArrayList<String>();  // ...と代入を分けてもよい
Javaにおけるデータ型と例外処理

Ayo berlatih!

Javaにおけるデータ型と例外処理

Preparing Video For Download...