9.Set

Set構造は、要素を順番付けしないで管理するデータ構造です。
「HashSet」「TreeSet」の2種類があります。

Set構造

Listのような順番付けや、Mapのようなキー管理もないため、要素の取得にはIteratorや拡張for構文で取得します。
このようなことからHashSetは要素の取得順は保証されませんが、TreeSetは自動ソートされて管理されるのでソートされた順番で要素が取得されます。
また、HashSetは要素にnullを使用する事が可能ですが、TreeSetはnullを使用する事ができません。
Set構造は、要素の重複は不可です。(同じキーがセット(add)された場合は上書きされます。)

セット(HashSet)

HashSet も配列を扱いますが、要素の重複が許されない、順序の保障が無い点が ArrayList や LinkedList と異なります。要素を参照する際には Iterator を用います。

§HashSetTest.java
import java.util.*;

class HashSetTest {
    public static void main(String[] args) {
        HashSet set = new HashSet();
        set.add("AAA");
        set.add("BBB");
        set.add("CCC");
        set.add("AAA");
        Iterator it = set.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

実行結果は下記のようになります。AAA を 2回 add() していますが、重複要素がひとつにマージされます。結果の順序は add() した順序に関係なくバラバラになります。

C:java>java HashSetTest
CCC
AAA
BBB

下記などのメソッドが用意されています。

  • set.add(o) – オブジェクト o を配列の末尾に追加する
  • set.clear() – 配列をクリアする
  • set.contains(o) – オブジェクト o と等しい要素があるか調べる
  • set.isEmpty() – 空かどうか調べる
  • set.remove(o) – オブジェクト o にマッチする要素を削除する
  • set.size() – 要素の個数を得る

2016-09-04 (4)

セット (TreeSet)

TreeSet も HashSet と同じように使用できます。要素が自動的にソートされる点が HashSet と異なります。

§HashSetTest.java
import java.util.*;

class TreeSetTest {
    public static void main(String[] args) {
        TreeSet set = new TreeSet();
        set.add("CCC");
        set.add("AAA");
        set.add("BBB");
        set.add("AAA");
        Iterator it = set.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
}

C:java>java TreeSetTest
AAA
BBB
CCC

2016-09-04 (3)

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


Related Post

1.Introduction1.Introduction

プログラミング言語   コンピュータ上で動くプログラムには様々な目的のために,様々な動きをするものがあります.その動きによって,プログラムの書きやすい書き方が異なります.そのために,これまで様々なプログラム言語が考え出されてきました. プログラム言語の分類 プログラム言語を書き方の種類で分類すると,手続き型言語,関数型言語,論理型言語, オブジェクト指向言語に分けられます. 手続き型言語は,命令文を実行する順に並べます.その順を変えるには繰り返し文や分岐文などの制御構造を利用します.手続き型言語には FORTRAN や COBOL,PASCAL,C などがあります. 関数型言語は,関数を定義することで動作を指示するもので,LISP や ML が代表的な例です. 論理型言語は,形式論理,数理論理に基づいたプログラム言語で,事実を定義することである問題を解決することができます.論理型言語には Prolog などがあります. オブジェクト指向言語は,データとそのデータに対する操作をまとめたオブジェクトの性質を定義することで動作を指示します.オブジェクト指向言語には Smalltalk,C++, […]

13.Web Application13.Web Application

Webアプリケーション作成に必要な概念を理解する Web Service Webサービスとは、大まかにいえば、Webの通信の仕組みを利用して、コンピュータ同士でさまざまなデータをやり取りし、分散処理を行うシステムです。 通信手順の取り決めのことを、「プロトコル」(Protocol)と呼びます。Webの世界では、「HTTP」(HyperText Transfer Protocol)というプロトコルで、通信が行われています。 HTTPは、WebブラウザなどのクライアントがWebサーバーにデータを要求し、それにWebサーバーが答える、という形のプロトコルです。 API アプリケーションプログラミングインタフェース (API、英: Application Programming Interface) とは、ソフトウェアコンポーネントが互いにやりとりするのに使用するインタフェースの仕様である。APIには、サブルーチン、データ構造、オブジェクトクラス、変数などの仕様が含まれる。 Webサービス大まかに言えば、以下のような流れで処理を進めます。 (1)クライアントからサーバーに対して、HTTPで接続して処理を要求します。 (2)サーバーは処理結果をクライアントに送信します。 (3)クライアントは(2)の結果を受信し、必要に応じて各種の処理を行います。 「HTTPで通信する」上位層に位置するプロトコル […]