初心者向けのJava講座です。一緒にJavaを勉強しませんか?
はじめてのJava入門初心者向けのJava講座 |
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コレクションの中にエレメントが存在しているか確認することができます。