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

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

スポンサー広告 |


2011/07/04 (Mon) JAVA応用4日目(ソートとSetのまとめ)

Setはデータの重複を排除したりデータをソートする際に使われる。
ただ重複はListのcontains()メソッドでも取得可能でSet単体で使うことは少ない。
SetはMap(次回)と一緒に使われることが多い。

◆LinkedHashSetクラス
◆TreeSetクラス
◆compareTo()メソッド
◆TreeSetクラスのコンストラクタ
◆TreeSetクラスのメソッド
◆サンプルコード
◆おまけ サンプルコードを降順にソート
◆Setのまとめ

LinkedHashSetクラス

HashSetクラスに順序の管理が加えられたクラス。
コンストラクタやメソッドは同じ。
出力させると入れた順番通りに出てくる。

LinkedHashSet hash = new LinkedHashSet();

HashSetクラス
登録例 ABCDA → 抽出例 CBAD

LinkedHashSetクラス
登録例 ABCDA → 抽出例 ABCD (順序が保持される)

TreeSetクラス

要素の重複は許可されない。
登録された要素をソートする。
要素のソートはコンストラクタで指定可能。
指定が無ければCompareTo、もしくはコンパレータのcompareで行う。

compareTo()メソッド

String a = "a";
String b = "b";
a.compareTo(b); → intの戻り値

+ 大きい
0 同じ
- 小さい

a-b=-1
b-a=1

a b c d e...
1 2 3 4 5...

TreeSetクラスのコンストラクタ

TreeSet() 自然順序順のTreeSetを作成
TreeSet(Collection) コレクションと同じ要素を持ちかつ自然順序順のTreeSetを作成
TreeSet(Comparator) 引数に指定されたComparatorにしたがってソートされたTreeSetを作成
TreeSet(SortedSet) SortedSetと同じ要素でかつ同じ順序のTreeSetを作成

TreeSetクラスのメソッド

基本的にはHashListクラス等と同様

Object first(); 最初(下端)の要素を返す
Object last(); 最後(上端)の要素を返す

サンプルコード

package test;

import java.util.Iterator;
import java.util.TreeSet;

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

TreeSet ts = new TreeSet();

ts.add("AAAAA");
ts.add("DDDDD");
ts.add("AAAAA");
ts.add("AA");
ts.add("BBBBB");

Iterator it = ts.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}

実行結果

AA
AAAAA
BBBBB
DDDDD

(重複を排除し昇順にソートされている)

おまけ サンプルコードを降順にソート

package test;

import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;

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

MyComparator my = new MyComparator();
TreeSet ts = new TreeSet(my);

ts.add("AAAAA");
ts.add("DDDDD");
ts.add("AAAAA");
ts.add("AA");
ts.add("BBBBB");

Iterator it = ts.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}

class MyComparator implements Comparator
{
public int compare(String arg0, String arg1) {
int num = -(arg0.compareTo(arg1));
return num;
}
}

実行結果

DDDDD
BBBBB
AAAAA
AA

Setのまとめ

①Setを利用することでデータの重複を防ぐ(調べる)ことが出来る。
②Listで利用できるgetメソッドやsetメソッドは実装されていない。
③Iteratorを利用することでデータを1件ずつ取得することが出来る。
④HashSetはSetの基本的なクラスで登録順序が保持されない。
⑤LinkedHashSetは挿入された順序を保持する。
⑥TreeSEtはソートして管理することが出来る。
⑦要素のソートはComparatorを使い独自のソート順を作成できる。

Setはデータの重複を排除する際やデータをソートする際に利用される。ただし、Listでもメソッド(contains)を使うことで重複をチェックできるので、利用する頻度は低いが、Mapを使う際にSetを利用することになる。

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


<<JAVA応用4日目 課題(TreeSetのソート) | TOP | Javaのコードをスリム化する>>

comment











管理人のみ閲覧OK


trackback

trackback_url
http://kononushi.blog46.fc2.com/tb.php/523-31ff7713

| TOP |

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