Set

まずはSetタイプのクラス構成を見てみます。
まずは一番先頭の階層にCollectionインタフェースがあり、Collectionインタフェースを継承したSetインタフェースがあります。
このSetインタフェースがSetタイプのルートになるインタフェースです。
このSetインタフェースを実装したコレクションクラスの主なクラスがHashSetクラスです。
そのほかにもLinkedSetクラス、TreeSetクラスが存在します。

Setの特徴

Setタイプのコレクションはエレメントを順不同にどんどん管理していきます。
つまりイメージ的にはひとつの箱の中にエレメントを順不同にどんどん入れていく感じです。
またエレメントを取り出すときにも上からどんどん取り出します。

しかしSetタイプのコレクションはコレクションの中に同じエレメントが存在するときはfalseが返され格納できません。

コレクションにエレメントを追加していくにはSetインタフェースのメソッドaddメソッドを使用します。
addメソッドは エレメントを追加する前にコレクションの中のエレメントを検索し同じエレメントが存在していない場合だけ追加されます。

もしも既にコレクションの中にエレメントが存在していたらfalseが返されます。

重複するエレメントが存在しない場合にはtrueが返されます。

サンプルプログラム(Sample90.java)

//import宣言
import java.util.*;
class Sample90{
    public static void main(String args[]){
     //HashSetのオブジェクト生成
     HashSet set = new HashSet();
     String str1 = "Hello";
     String str2 = "Java";

    //エレメントstr1 とstr2の追加
     System.out.println(set.add(str1));
     System.out.println(set.add(str2));
    //さらにエレメントstr1を追加します
    System.out.println("------------------------");
    System.out.println(set.add(str1));
    }
}

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

1890円〜100GBの大容量。無制限レンタルサーバー【X2】
ブログ、ショップを設置するなら!
月99円〜、最大20GBのレンタルサーバー
スクール・通信講座の徹底比較!一括資料請求【無料】

コンパイル・実行します。

実行結果はこのようになります。
下の図で説明します。

つまりSample90ではまずSetというコレクションにメソッドadd()を使いオブジェクトを追加しています。
今Setの中にはHelloとJavaというオブジェクトが入っています。
しかしさらにHelloオブジェクトを追加しようとしています。
Setインタフェースには同じオブジェクトを重複することができないので2つ目のHelloオブジェクトは falseが返されます。

では次のプログラムを見てください。

サンプルプログラム(Sample90_1.java)

//import宣言
import java.util.*;
class Sample90_1{
    public static void main(String args[]){
  //HashSetのオブジェクト生成
     HashSet set = new HashSet();

     String str1 = "Hello";
     String str2 = "Hello";

    //エレメントstr1 とstr2の追加
     System.out.println(set.add(str1));
     System.out.println(set.add(str2));

    //さらにエレメントstr1を追加します
    System.out.println("------------------------");
    System.out.println(set.add(str1));
} }

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

コンパイル・実行します。

今度は実行結果が変わりました
つまり今度はstr1もstr2も同じオブジェクトHelloを参照しているから
setコレクションの中にはで参照したオブジェクトHelloが追加されました。
したがってstr2はfalseが返されたわけです。

主なメソッド

メソッド
説明
add(object e) 指定した要素がセットの要素として存在しない場合にその要素をセットに追加
clear() すべての要素をセットから削除
contains() セットが、指定された要素を保持している場合にtrueを返す
isEmpty() セットが要素を1つも保持していない場合にtrueを返す
remove(object e) 指定された要素があればセットから削除します
size() セット内の要素数を返します。

では、メソッドを使ったサンプルプログラムを見ていきます。

サンプルプログラム(Sample90_2.java)

//import宣言
import java.util.*;
class Sample90_2{
    public static void main(String args[]){
   //HashSet オブジェクトの生成
   HashSet set = new HashSet();
  //HashSet オブジェクトにエレメントを追加
   String str1 = "Hello";
   String str2 = "Java";

   set.add(str1);
   set.add(str2);

   //Hash オブジェクトが管理するエレメント数
    System.out.println("エレメント数は" + set.size());

   //HashSet オブジェクトから指定オブジェクトの存在確認
    System.out.println("エレメントの存在確認    :" + set.contains(str1));

   //HashSet オブジェクトは重複追加できません。
    System.out.println(set.add(str1));

    //HashSet オブジェクトから指定エレメントの削除
    System.out.println("str2を削除します     :" + set.remove(str2));

   //最後にHashSet オブジェクトが管理しているエレメント数を表示
    System.out.println("最終エレメント数は" + set.size());
    }

}

プログラムをコピーする場合すべて選択をクリックしてください。

Sponsored link

コンパイル・実行してみます。

結果はこのようになりました。
Setクラスのメソッドを使用することでエレメントの追加や削除または
Setコレクションの中にエレメントが存在しているか確認することができます。

ページのトップへ戻る