--/--/-- (--) スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサー広告 |


2011/07/04 (Mon) JAVA応用6日目 課題(Mapインターフェイス2)

高機能な2次元配列のようなもの。
LinkedHashMapは順序の管理、TreeMapはソートの機能が備わっている。
データベースを作る際に使えそう。

◆LinkedHashMap
◆LinkedHashMapのコンストラクタ
◆LinkedHashMapのメソッド
◆LinkedHashMapのサンプルコード
◆TreeMap
◆TreeMapのコンストラクタ
◆TreeMapのメソッド
◆TreeMapのサンプルコード
◆Mapのまとめ

LinkedHashMap

HashMapに順序の管理を加えたクラス。
順序の管理に関してコンストラクタを利用し①挿入順②アクセス順を切り替えることが出来る。

LinkedHashMapのコンストラクタ

基本的にはHashMapと同じ
異なるのは以下、

LinkedHashMap(int,float,boolean)

→引数に指定した容量と負荷係数を持ち、第3引数がtrueの場合はアクセス順、falseの場合は挿入順序を保持した空のLinkedHashMapを生成する。

※アクセス順だと最後にアクセスされたものが最後尾に移動する。

1 a あいう
2 b かきく
3 c さしす

get("b");

1 a あいう
2 c さしす
3 b かきく

LinkedHashMapのメソッド

基本的にはHashMapと同じ。

LinkedHashMapのサンプルコード

package test;

import java.util.Iterator;
import java.util.LinkedHashMap;

public class Test {
public static void main(String[] args){
LinkedHashMap hm = new LinkedHashMap();

//商品名、在庫数
hm.put("ペリカン", 10);
hm.put("モンテグラッパ",3);
hm.put("モンブラン", 15);
hm.put("ウォーターマン", 12);
hm.put("ペリカン", 5);

System.out.println("メーカー名:在庫数");

Iterator it = hm.keySet().iterator();
while(it.hasNext()){
String key = it.next();
//アクセス順に切り替える場合ここではget()メソッドは使えない
System.out.println(key+":"+hm.get(key));
}

//拡張for文の場合
for(String i : hm.keySet()){
System.out.println(i);
}

for(Integer i : hm.values()){
System.out.println(i);
}
}
}


実行結果

商品名:在庫数
ペリカン:5
モンテグラッパ:3
モンブラン:15
ウォーターマン:12
ペリカン
モンテグラッパ
モンブラン
ウォーターマン
5
3
15
12

実行結果(アクセス順、拡張for文無し)

商品名:在庫数
モンテグラッパ:
モンブラン:
ウォーターマン:
ペリカン:

TreeMap

要素のソートはコンストラクタで指定することが出来る。
指定が無ければキーのCompareToもしくはコンパレータのcompareで行う。

基本的にはTreeSetと似ている。

TreeMapのコンストラク

TreeMap() キーの自然順序付けによってソート。
TreeMap(Comparator) 指定されたコンパレータによってソート。
TreeMap(Map) 指定されたマップと同じマッピングを持ちキーの自然順序付けによってソート。
TreeMap(SortedMap) 指定されたSortedMapと同じマッピング、順序付けによってソート。

TreeMapのメソッド

HashMap、LinkedHashMap同様。

TreeMapのサンプルコード

package test;

import java.util.Iterator;
import java.util.TreeMap;

public class Test {
public static void main(String[] args){

TreeMap tm = new TreeMap();

tm.put("モンテグラッパ",10);
tm.put("カランダッシュ", 3);
tm.put("ラミー", 15);
tm.put("アウロラ", 12);
tm.put("モンテグラッパ", 5);

System.out.println("メーカー名:在庫数");

Iterator it = tm.keySet().iterator();
while(it.hasNext()){
String key = it.next();
System.out.println(key+":"+tm.get(key));
}
}
}

実行結果

メーカー名:在庫数
アウロラ:12
カランダッシュ:3
モンテグラッパ:5
ラミー:15

※メーカー名で自動的にソートされている。

Mapのまとめ

①Mapはキーと値の対で管理する。
②キーの重複は出来ず、上書きされる。
③HashMapは登録順が保持されない。
④LinkedHashMapは挿入された順序を保持する。
⑤LinkedHashMapはコンストラクタによってアクセス順序を保持できる。
⑥TreeMapはキーをソートして管理することが出来る。
⑦キーのソートはComparator(実装した独自クラス+compareTo)を使い独自のソート順を作成できる。

Mapはこれまでのコレクションとは異なりキーと値という組み合わせで管理する。
単一のデータに複数の属性を持たせたり異なる扱い方をすることが出来る。

プログラミング | trackback(0) | comment(0) |


<<Javaでロト6シミュレーターを作る | TOP | JAVA応用5日目(Mapインターフェイス)>>

comment











管理人のみ閲覧OK


trackback

trackback_url
http://kononushi.blog46.fc2.com/tb.php/526-18f582b4

| TOP |

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。