コレクション・フレームワーク J2EE I (データベース論) 第6回 / 2004-05-26.

Slides:



Advertisements
Similar presentations
Generic programming と STL
Advertisements

JavaScript プログラミング入門 2006/11/10 神津.
オブジェクト指向プログラミング(4) 静的分析(2)
アルゴリズムとデータ構造 2013年6月18日
アルゴリズムとデータ構造1 2005年7月8日
アルゴリズムとデータ構造 2010年7月5日
Javaのための暗黙的に型定義される構造体
データマイニングのための柔軟なデータ取得、操作を支援するAPIの設計
第9回 並び替えアルゴリズム ~さまざまなアルゴリズムを比較しよう~.
第5回 2007年5月25日 応用Java (Java/XML).
第4回 2007年5月11日 応用Java (Java/XML).
アルゴリズムとデータ構造 2012年6月14日
情報工学概論 (アルゴリズムとデータ構造)
独習Java ・ 10.6  Hashtableクラス ・ 10.7  String Tokenizerクラス  12月12日    小笠原 一恵.
情報処理Ⅱ 2005年12月9日(金).
アルゴリズムとデータ構造 2011年6月13日
セッション管理 J2EE I 第9回 /
データ構造と アルゴリズム 第八回 知能情報学部 新田直也.
エンタープライズアプリケーション II 第7回 / 2006年7月9日
第20章 Flyweight ~同じものを共有して無駄をなくす~
メソッド名とその周辺の識別子の 相関ルールに基づくメソッド名変更支援手法
アルゴリズムとデータ構造 2011年6月14日
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
RMI ソフトウェア特論 第6回 /
第13回 ハッシュテーブルを使ったプログラム ~高速に検索するには?~.
~手続き指向からオブジェクト指向へ[Ⅱ]~
Stateful Session Beans
暗黙的に型付けされる構造体の Java言語への導入
シューティングゲーム.
アルゴリズムとデータ構造1 2006年7月4日
ポインタ解析におけるライブラリの スタブコードへの置換の効果
Collection, Generics, Iterator
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
Jakarta Struts (2) ソフトウェア特論 第11回.
第9回 優先度つき待ち行列,ヒープ,二分探索木
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
アルゴリズムとデータ構造1 2005年6月24日
アルゴリズムとデータ構造 2010年6月21日
2009/10/23 整列アルゴリズム (1) 第4講: 平成21年10月23日 (金) 4限 E252教室 コンピュータアルゴリズム.
JDBC J2EE I (データベース論) 第5回 /
Servlet ソフトウェア特論 第7回.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
Servlet J2EE I (データベース論) 第12回 /
Servlet データベース論 第6回.
実装編②HashTable,JavaAPI
アルゴリズムとプログラミング (Algorithms and Programming)
プログラミング言語論 第十三回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第十二回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
第9回 優先度つき待ち行列,ヒープ,二分探索木
アルゴリズムとデータ構造 2012年6月11日
JAVA入門③ 配列とコレクション.
アルゴリズムとプログラミング (Algorithms and Programming)
コレクション・フレームワーク データベース論 第7回.
サブゼミ第7回 実装編① オブジェクト型とキャスト.
WebアプリケーションとTomcat ― これまでの復習とこれからの予習 ―
Action Method の実装 J2EE II 第9回 2004年12月2日.
アルゴリズムとデータ構造1 2009年7月2日
アルゴリズムとデータ構造1 2009年6月15日
JSPの基本 J2EE I (データベース論) 第8回 /
ゲームのタスクシステム 導入編 レベル2くまー By keychan.
平面走査法を使った 一般線分の 交点列挙アルゴリズム
Post-Kona paper 解説 P0083R1: Splicing Maps and Sets (Rev.3) 稲葉 一浩
アルゴリズムとデータ構造 2010年6月17日
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
データ構造と アルゴリズム 第四回 知能情報学部 新田直也.
データ構造と アルゴリズムI 第三回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
JSFによるWebアプリケーション開発 第7回
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

コレクション・フレームワーク J2EE I (データベース論) 第6回 / 2004-05-26

お知らせ http://www.wakhok.ac.jp/~tomoharu/db2004/ 6月9日(水)の授業は、安藤が出張のため、休講の予定です。 第1回レポート課題を出しています。締め切りは6月16日(水)です。 http://www.wakhok.ac.jp/~tomoharu/db2004/

コレクション・フレームワーク コレクション コレクションを繰り返して処理する 代表的なアルゴリズムを使う オブジェクトをまとめたもの ソート、サーチなど

コレクション オブジェクトを集めたもの これらはいずれも「インタフェース」であり、実装クラスが別にある。 java.util.List java.util.Set java.util.Map これらはいずれも「インタフェース」であり、実装クラスが別にある。 単に配列を使ったりするよりも、便利な機能が多い。

java.util.List (1) オブジェクトが順番に並んだコレクション java.util.List はインタフェース 実装クラスには java.util.ArrayList java.util.LinkedList java.util.Vector

java.util.List (2) // 生成 List list = new ArrayList(); // リストの末尾に追加 list.add(line); // 0番目 (=先頭) の要素を取得 String str = (String)list.get(0);

インタフェースの利用 普通ならこう書く。 ArrayList は List インタフェースを実装しているので、こう書ける。 ArrayList list = new ArrayList(); ArrayList は List インタフェースを実装しているので、こう書ける。 List list = new ArrayList(); LinkedList も List を実装しているから、こう書ける。 List list = new LinkedList(); public class ArrayList implements List { ….. }

java.util.List (3) リスト内での挿入や削除が頻繁に起こるなら、実装クラスには java.util.LinkedList を使う。 「ダブルリンクトリスト」というデータ構造が使われており、挿入や削除が高速にできる。 List list = new LinkedList(); とするだけ。 ArrayList や LinkedList は同期化されていない。 同期化するには次のようにする。 List newList = Collections.synchronizedList(list);

同期化 1つのオブジェクトに、2つのスレッドがアクセスする場合 そこで、同時にはアクセスできないようにする。これが同期化。 1つのスレッドからは、オブジェクトを削除するメソッド 別のスレッドからは、オブジェクトを取得するメソッド 矛盾が生じる そこで、同時にはアクセスできないようにする。これが同期化。 ただし、同期化させると遅くなる。

java.util.Set (1) オブジェクトの重複がないコレクション 数学の「集合」と同じ 実装クラスには java.util.HashSet HashSet は同期化されていない。

java.util.Set (2) // 生成 Set set = new HashSet(); // 登録 set.add(“1000”); // 指定したオブジェクトが含まれているかどうか set.contains(“1000”);

java.util.Map (1) 「キー」と「値」がペアになっているコレクション キーの重複はない。 実装クラスには java.util.HashMap java.util.WeakHashMap java.util.Hashtable HashMap や WeakHashMap は同期化されていない。

java.util.Map (2) // 生成 Map map = new HashMap(); // 登録 (“1000” がキー、“夏目漱石” が値) map.put(“1000”, “夏目漱石”); // キーから値を取得 String value = (String)map.get(“1000”);

java.util.SortedSet と java.util.SortedMap 挿入や削除があっても順番を保持する 実装クラスは java.util.TreeSet java.util.SortedMap 内部でキーの順番を保持している Map 実装クラスは java.util.TreeMap

java.util.Iterator (1) コレクションの中のオブジェクトをひとつひとつ処理していく。

java.util.Iterator (2) Iterator iterator = list.iterator(); while (iterator.hasNext()) { String value = (String)iterator.next(); System.out.println(value); }

java.util.Collections コレクションの中でのソート(整列)、サーチ(探索)、最大・最小など、代表的なアルゴリズムをそのまま使える。 Collections.sort(list); ソートの場合は、「自然な順序付け」で行う。例えば、アルファベット順など。 順序付けは自分で定義できる。