リスト

Javajava.util

概要

 状態:-  閲覧数:2,352  投稿日:2013-10-22  更新日:2013-11-04  
コレクション系インターフェイス

特徴
・配列と同様に、複数件のデータを扱うためのデータ構造
・重複要素を許可し、要素において順番を保持
・インデックス番号により要素にアクセスするメソッドや、要素のインデックス番号を調べるメソッドが用意されている

配列との相違点
・リスト生成時にサイズを決める必要はない
・リストにデータを追加する度に、リストのサイズは増えていく

実装クラス
・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

 閲覧数:437 投稿日:2013-10-28 更新日:2013-11-04 

概要


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

 閲覧数:371 投稿日:2013-10-28 更新日:2013-11-04 

概要


・要素の順番を各要素の前後のリンク情報を持つことによって保持
・要素の追加、削除を行う場合、リンク情報を変更することによって処理するため高速に動作する
・要素の検索においては、要素に順番にアクセスするため低速

LinkedList (Java Platform SE 7 )

List list = new ArrayList();

 閲覧数:407 投稿日:2013-10-30 更新日:2013-11-04 

テーマ


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実装クラス型の機能(メソッド)も使いたい、場合に利用

リストの例

 閲覧数:361 投稿日:2013-11-03 更新日:2013-11-04 

具体例





Calendarクラス

コメント投稿(ログインが必要)