概要
状態:-
閲覧数:2,375
投稿日:2013-10-22
更新日:2013-11-04
コレクション系インターフェイス
特徴
・配列と同様に、複数件のデータを扱うためのデータ構造
・重複要素を許可し、要素において順番を保持
・インデックス番号により要素にアクセスするメソッドや、要素のインデックス番号を調べるメソッドが用意されている
配列との相違点
・リスト生成時にサイズを決める必要はない
・リストにデータを追加する度に、リストのサイズは増えていく
実装クラス
・Listインタフェースを実装するクラスとして、ArrayList、LinkedListが定義されている
※実装クラスは2つに分類される(古いクラスのため推奨されていないVectorを除く)
Java Platform SE 7
・トップページ(フレーム付き)
・java.util … Listインターフェイス
・java.awt … Listクラス
Java Platform SE 6
・java.util … Listインターフェイス
Abstract Window Toolkit (AWT)
・Java独自のプラットフォーム非依存 ウィンドウシステム、グラフィックス、ユーザインタフェース(UI)、ウィジェット・ツールキットのこと
・現在はJava Foundation Classes (JFC)に含まれ、Javaプログラム用グラフィカルユーザインタフェース(GUI)を提供する標準APIの一部となっている
特徴
・配列と同様に、複数件のデータを扱うためのデータ構造
・重複要素を許可し、要素において順番を保持
・インデックス番号により要素にアクセスするメソッドや、要素のインデックス番号を調べるメソッドが用意されている
配列との相違点
・リスト生成時にサイズを決める必要はない
・リストにデータを追加する度に、リストのサイズは増えていく
実装クラス
・Listインタフェースを実装するクラスとして、ArrayList、LinkedListが定義されている
※実装クラスは2つに分類される(古いクラスのため推奨されていないVectorを除く)
インターフェイス | インターフェイス | インターフェイス | 実装クラス |
---|---|---|---|
Iterable | Collection | List | ArrayList |
〃 | 〃 | 〃 | LinkedList |
公式リンク
Java Platform SE 7
・トップページ(フレーム付き)
・java.util … Listインターフェイス
・java.awt … Listクラス
Java Platform SE 6
・java.util … Listインターフェイス
AWTとは?
Abstract Window Toolkit (AWT)
・Java独自のプラットフォーム非依存 ウィンドウシステム、グラフィックス、ユーザインタフェース(UI)、ウィジェット・ツールキットのこと
・現在はJava Foundation Classes (JFC)に含まれ、Javaプログラム用グラフィカルユーザインタフェース(GUI)を提供する標準APIの一部となっている
1.ArrayList
概要
Listインタフェース実装の基本となるクラス
特徴
・ランダムアクセスをサポートしており、要素の検索において高速に動作する
・要素の追加、削除においては、追加、削除された要素以降の要素を再配置する必要があるため低速
背景
・ArrayListクラスはVectorクラスの後継として定義された
・違いは要素の操作を行う際、Vectorクラスが同期化されているのに対して、ArrayListクラスが同期化されていない点
・ArrayListクラスは同期化されていない分、高速に動作する
・同期化された処理をArrayListクラスで行う場合は、ArrayListクラスに同期処理を実装する
公式サイト
・ArrayList (Java Platform SE 7 )
処理の流れ
0.必要パッケージを読み込む
・リストを使うには、ソースファイル最初の方に以下のimport文が必要
import java.util.*;
1.リスト生成
List<データ型> リストの名前 = new ArrayList<データ型>();
・リストの生成では、格納するデータの型とリストの名前を指定・サイズの指定は必須ではない
例 … String型オブジェクトを格納するリストlistを生成
List<String> list = new ArrayList<String>();
例 … クラス型オブジェクト(ユーザー定義クラスRecordItemのオブジェクト)を格納するリストlistを生成
List<RecordItem> itemList;
itemList = new ArrayList<RecordItem>();
※List<データ型>の「List」は参照型(オブジェクト型)変数のインタフェース型(Listインターフェイス)を意味する
2.リストへデータを追加
2-1.リストの名前と追加するデータを指定
2-2.追加のたびに、データがリスト末尾に追加され、リストのサイズが1増える
リストの名前.add( データ );
例 … リストlistへデータを追加する
list.add( "work" );
list.add( "play" );
list.add( "sleep" );
例 … リストitemListへデータを追加する
while( !cursor.isAfterLast()){
itemList.add( getItem( cursor ) );
cursor.moveToNext();
}
2.LinkedList
概要
・要素の順番を各要素の前後のリンク情報を持つことによって保持
・要素の追加、削除を行う場合、リンク情報を変更することによって処理するため高速に動作する
・要素の検索においては、要素に順番にアクセスするため低速
LinkedList (Java Platform SE 7 )
List list = new ArrayList();
テーマ
「ArrayList list = new ArrayList();」ではなく「List list = new ArrayList();」と書く理由
前提
・ArrayListは、Listインターフェイスをimplementsした実装クラス
・Listはインタフェースなので、「List list = new List();」記述は不可能
結論
ArrayList 特有の機能を使う必要がある場合
・ArrayList list = new ArrayList();
Listインターフェイスだけの機能で十分な場合
・List list = new ArrayList();
List list
List list = new ArrayList();
1.listをListインターフェイスで宣言
2.そこへ「Listインターフェイスをimplementsしたクラス(=ArrayList)のインスタンス」を格納
・つまり、ArrayListクラスのインスタンスを生成して、Listインターフェイス型のリスト「list」へ格納している
特徴
1.「Listインターフェイスをimplementsしたクラスのインスタンス」なら何でも格納可能
2.「Listインターフェイス」の機能(メソッド)を利用可能
・「list」オブジェクトは、Listインターフェイス型メソッドが利用可能
・「list」オブジェクトは、ArrayList実装クラス型のメソッドは利用不可
・つまり、ArrayList実装クラス型の機能(メソッド)を使う予定はないが、Listインターフェイス型の機能(メソッド)は使いたい、場合に利用
ArrayList list
ArrayList list = new ArrayList();
1.listをArrayListクラスで宣言
2.そこへ「Listインターフェイスをimplementsしたクラス(=ArrayList)のインスタンス」を格納
・つまり、ArrayListクラスのインスタンスを生成して、ArrayListクラス型のリスト「list」へ格納している
特徴
1.「ArrayListクラスのインスタンス」のみ格納可能
2.「ArrayListクラス」の機能(メソッド)のみ利用可能
・「list」オブジェクトは、Listインターフェイス型メソッドが利用可能
・「list」オブジェクトは、ArrayList実装クラス型のメソッドも利用可能
・つまり、Listインターフェイス型だけではなくArrayList実装クラス型の機能(メソッド)も使いたい、場合に利用