set interface java
このJavaSetチュートリアルでは、JavaのSetInterfaceについてすべて説明しています。セット、セットメソッド、実装、セットからリストなどを反復処理する方法について説明します。
Set in Javaは、Java Collection Frameworkの一部であり、Collectionインターフェースを実装するインターフェースです。セットコレクションは、数学セットの機能を提供します。
セットは、順序付けされていないオブジェクトのコレクションとして定義でき、重複する値を含めることはできません。 setインターフェースはCollectionインターフェースを継承するため、Collectionインターフェースのすべてのメソッドを実装します。
=> ここで完璧なJavaトレーニングガイドをチェックしてください。
学習内容:
Javaセット
セットインターフェイスは、次の図に示すように、クラスとインターフェイスによって実装されます。

上の図に示すように、Setインターフェイスは、クラス、HashSet、TreeSet、LinkedHashSet、およびEnumSetに継承されます。インターフェースSortedSetおよびNavigableSetもSetインターフェースを実装します。
Setインターフェイスの重要な特性のいくつかを以下に示します。
- セットインターフェースは、Javaコレクションフレームワークの一部です。
- セットインターフェイスでは、一意の値を使用できます。
- 最大で1つのnull値を持つことができます。
- Java 8は、setインターフェースのデフォルトメソッドであるSplitteratorを提供します。
- setインターフェースは、要素のインデックスをサポートしていません。
- セットインターフェイスはジェネリックをサポートします。
セットを作成する方法は?
Javaのsetインターフェースは、java.utilパッケージの一部です。プログラムにsetインターフェイスを含めるには、次のimportステートメントのいずれかを使用する必要があります。
import java.util.*; または
import java.util.Set; セットインターフェイス機能がプログラムに含まれると、以下に示すように、任意のセットクラス(セットインターフェイスを実装するクラス)を使用してJavaでセットを作成できます。
Set colors_Set = new HashSet(); 次に、addメソッドを使用していくつかの要素を追加することにより、このセットオブジェクトを初期化できます。
colors_Set.add(“Red”); colors_Set.add(“Green”); colors_Set.add(“Blue”); Javaで例を設定する
Setインターフェイスを示すために、Javaで簡単な例を実装してみましょう。
import java.util.*; public class Main { public static void main(String() args) { // Set demo with HashSet Set Colors_Set = new HashSet(); Colors_Set.add('Red'); Colors_Set.add('Green'); Colors_Set.add('Blue'); Colors_Set.add('Cyan'); Colors_Set.add('Magenta'); //print set contents System.out.print('Set contents:'); System.out.println(Colors_Set); // Set demo with TreeSet System.out.print('
Sorted Set after converting to TreeSet:'); Set tree_Set = new TreeSet(Colors_Set); System.out.println(tree_Set); } }出力:
セット内容:(赤、シアン、青、マゼンタ、緑)
TreeSetに変換した後のソート済みセット:(青、シアン、緑、マゼンタ、赤)

Javaで設定を繰り返す
さまざまなアプローチを使用して、セットの各要素にアクセスできます。これらのアプローチについては、以下で説明します。
イテレータの使用
セットオブジェクトをトラバースするイテレータを定義できます。このイテレータを使用して、セット内の各要素にアクセスして処理できます。
次のJavaプログラムは、セットの反復を示し、セット要素を出力します。
import java.util.*; import java.util.HashSet; public class Main { public static void main(String args()) { // Create a HashSet object and initialize it Set cities_Set = new HashSet(); cities_Set.add('Bangaluru'); cities_Set.add('Pune'); cities_Set.add('Hyderabad'); cities_Set.add('Kolkata'); // Print the set contents System.out.println('HashSet: ' + cities_Set); // Create an iterator for the cities_Set Iterator iter = cities_Set.iterator(); // print the set contents using iterator System.out.println('Values using Iterator: '); while (iter.hasNext()) { System.out.print(iter.next()+ ' '); } } }出力:
HashSet:(バンガロール、プネー、コルカタ、ハイデラバード)
イテレータを使用した値:
バンガロールプネコルカタハイデラバード

For-eachループの使用
for-eachループを使用して、セット内の要素にアクセスすることもできます。ここでは、セットをループで繰り返します。
次のプログラムはこれを示しています。
import java.util.*; import java.util.HashSet; public class Main { public static void main(String args()) { // Create a HashSet object and initialize it Set cities_Set = new HashSet(); cities_Set.add('Bangaluru'); cities_Set.add('Pune'); cities_Set.add('Hyderabad'); cities_Set.add('Kolkata'); // Print the set contents System.out.println('HashSet: ' + cities_Set); System.out.println('
Set contents using forEach loop:'); // print the set contents using forEach loop for(String val : cities_Set) { System.out.print(val + ' '); } } } 出力:
HashSet:(バンガロール、プネー、コルカタ、ハイデラバード)
forEachループを使用してコンテンツを設定します。
バンガロールプネコルカタハイデラバード

Java 8 StreamAPIの使用
Java 8ストリームAPIを使用して、セット要素を反復処理してアクセスすることもできます。ここでは、セットからストリームを生成し、forEachループを使用してストリームを反復処理します。
以下のJavaプログラムは、Java8ストリームAPIを使用したセットの反復を示しています。
import java.util.*; import java.util.HashSet; import java.util.stream.*; public class Main { public static void main(String args()) { // Create a HashSet object and initialize it Set cities_Set = new HashSet(); cities_Set.add('Bangaluru'); cities_Set.add('Pune'); cities_Set.add('Hyderabad'); cities_Set.add('Kolkata'); // Print the set contents System.out.println('HashSet: ' + cities_Set); System.out.println('
Set contents using Java 8 stream API:'); //generate a stream from set Stream stream = cities_Set.stream(); //iterate the stream using forEach loop to print the elements stream.forEach((element) -> { System.out.print(element + ' '); }); } }出力:
HashSet:(バンガロール、プネー、コルカタ、ハイデラバード)
Java8ストリームAPIを使用してコンテンツを設定します。
バンガロールプネコルカタハイデラバード

Set Methods API
以下に、Setインターフェイスでサポートされているメソッドを示します。これらのメソッドは、他の操作とともに、追加、削除、包含などの基本的な操作を実行します。
無料の従業員タイムレコーダーソフトウェアのダウンロード
| 方法 | メソッドプロトタイプ | 説明 |
|---|---|---|
| isEmpty | ブールisEmpty() | セットが空かどうかを確認します |
| 追加 | ブール加算(E e) | 要素eがセットに存在しない場合は、要素eをセットに追加します |
| 全て追加する | boolean addAll(コレクションc) | コレクションcの要素をセットに追加します。 |
| 削除する | ブール値の削除(オブジェクトo) | 指定された要素oをセットから削除します。 |
| すべて削除する | boolean removeAll(コレクションc) | 指定されたコレクションcに存在する要素をセットから削除します。 |
| 含まれています | boolean contains(Object o) | 指定された要素oがセットに存在するかどうかを確認します。はいの場合はtrueを返します。 |
| containsAll | ブールcontainsAll(コレクションc) | セットに指定されたコレクションのすべての要素が含まれているかどうかを確認します。はいの場合はtrueを返します。 |
| 保持すべて | ブールretainAll(コレクションc) | セットは、指定されたコレクション内のすべての要素を保持しますc |
| 晴れ | ボイドクリア() | セットからすべての要素を削除してセットをクリアします |
| イテレータ | イテレータイテレータ() | セットのイテレータを取得するために使用されます |
| toArray | Object () toArray() | セットを、セット内のすべての要素を含む配列表現に変換します。 |
| サイズ | intサイズ() | 要素の総数またはセットのサイズを返します。 |
| ハッシュコード | ハッシュコード () | セットのhashCodeを返します。 |
ここで、上記で説明したメソッドのいくつかをJavaプログラムに実装しましょう。また、2つのセットを含む次の特定の操作も表示されます。
Javaでの実装の設定
交差点: 2つのセット間で共通の値を保持します。を使用して交差点を実行します 保持すべて 方法。
連合: ここでは、2つのセットを組み合わせます。これはで行われます 全て追加する 方法。
差: この操作により、一方のセットがもう一方のセットから削除されます。この操作は、 すべて削除する 方法。
import java.util.*; public class Main { public static void main(String args()) { //declare a set class (HashSet) Set numSet = new HashSet(); //add an element => add numSet.add(13); //add a list to the set using addAll method numSet.addAll(Arrays.asList(new Integer() {1,6,4,7,3,9,8,2,12,11,20})); //print the set System.out.println('Original Set (numSet):' + numSet); //size() System.out.println('
numSet Size:' + numSet.size()); //create a new set class and initialize it with list elements Set oddSet = new HashSet(); oddSet.addAll(Arrays.asList(new Integer() {1, 3, 7, 5, 9})); //print the set System.out.println('
OddSet contents:' + oddSet); //contains () System.out.println('
numSet contains element 2:' + numSet.contains(3)); //containsAll () System.out.println('
numSet contains collection oddset:' + numSet.containsAll(oddSet)); // retainAll () => intersection Set set_intersection = new HashSet(numSet); set_intersection.retainAll(oddSet); System.out.print('
Intersection of the numSet & oddSet:'); System.out.println(set_intersection); // removeAll () => difference Set set_difference = new HashSet(numSet); set_difference.removeAll(oddSet); System.out.print('Difference of the numSet & oddSet:'); System.out.println(set_difference); // addAll () => union Set set_union = new HashSet(numSet); set_union.addAll(oddSet); System.out.print('Union of the numSet & oddSet:'); System.out.println(set_union); } }出力:
元のセット(numSet):(1、2、3、4、20、6、7、8、9、11、12、13)
numSetサイズ:12
OddSetの内容:(1、3、5、7、9)
numSetには要素2が含まれています:true
numSetにはコレクションoddset:falseが含まれています
numSetとoddSetの交差点:(1、3、7、9)
numSetとoddSetの違い:(2、4、6、8、11、12、13、20)
numSetとoddSetの和集合:(1、2、3、4、5、6、7、8、9、11、12、13、20)

配列に設定
メソッドに関する上記のセクションで、メソッド「toArray」を見てきました。このtoArrayメソッドを使用して、セットを配列に変換できます。
以下のJavaプログラムは、セットを配列に変換します。
import java.util.*; public class Main { public static void main(String() args) { //declare a set class (HashSet) Set setOfColors= new HashSet(); // add data to HashSet setOfColors.add('Red'); setOfColors.add('Green'); setOfColors.add('Blue'); setOfColors.add('Cyan'); setOfColors.add('Magenta'); //print the set System.out.println('The set contents:' + setOfColors); //convert Set to Array using toArray () method String colors_Array() = setOfColors.toArray(new String(setOfColors.size())); //print the Array System.out.println('Set converted to Array:' + Arrays.toString(colors_Array)); } }出力:
セット内容:【赤・シアン・青・マゼンタ・緑】
配列に変換されたセット:(赤、シアン、青、マゼンタ、緑)

設定する配列
Javaで配列をセットに変換するには、以下に示す2つのアプローチに従うことができます。
#1) asListメソッドを使用して配列をリストに変換し、このリストを引数としてsetコンストラクターに渡すことができます。これにより、配列要素を使用してセットオブジェクトが作成されます。
#二) または、Collections.addAllメソッドを使用して、配列要素をsetオブジェクトにコピーすることもできます。
以下のJavaプログラムは、配列をセットに変換するためにこれら両方のアプローチを実装しています。
import java.util.*; public class Main { public static void main(String() args) { //declare an array Integer() numArray = {10,50,40,20,60,30,80,70}; System.out.println('The input array:' + Arrays.toString(numArray)); //Approach 1: create a set class and provide array //converted to list as constructor arg Set numSet = new HashSet(Arrays.asList(numArray)); //print the set System.out.println('
Array converted to set through asList:' + numSet); //create another set Set intSet = new HashSet(); //Approach 2: use Collections.addAll method to copy array elements to the set Collections.addAll(intSet, numArray); //print the set System.out.println('
Array converted to set using Collections.addAll:' + intSet); } }出力:
入力配列:(10、50、40、20、60、30、80、70)
asListを介してセットに変換された配列:(80、50、20、70、40、10、60、30)
Collections.addAll:(80、50、20、70、40、10、60、30)を使用して配列をセットに変換

リストに設定
Javaでセットをリストに変換するには、リストクラスの「addAll」メソッドを使用できます。このメソッドは、引数として提供されたセットまたはコレクションの内容を、addAllメソッドを呼び出すリストにコピーします。
以下のJavaプログラムは、セットをArrayListに変換します。
import java.util.*; public class Main { public static void main(String() args) { //declare a set class and initialize it Set strSet= new HashSet(); strSet.add('one'); strSet.add('two'); strSet.add('three'); strSet.add('four'); strSet.add('five'); //print the set System.out.println('The set contents: ' + strSet); //declare an ArrayList List strList = new ArrayList(); //using addAll method,copy set elements to ArrayList strList.addAll(strSet); //print the ArrayList System.out.println('The ArrayList from set : ' + strList); } }出力:
セット内容:【4、1、2、3、5】
セットからのArrayList:(4、1、2、3、5)

設定するリスト
ArrayListのような指定されたリストをJavaのセットに変換するには、リストオブジェクトを引数としてセットのコンストラクターに渡します。
次のJavaプログラムは、この変換を実装しています。
import java.util.*; public class Main { public static void main(String() args) { //declare an ArrayList and initialize it List strList = new ArrayList(); strList.add('one'); strList.add('two'); strList.add('three'); strList.add('four'); strList.add('five'); //print the ArrayList System.out.println('The ArrayList: ' + strList); //declare a set class with ArrayList as argument to the constructor Set strSet= new HashSet(strList); //print the set System.out.println('The Set obtained from ArrayList: ' + strSet); } }出力:
ArrayList:(1、2、3、4、5)
ArrayListから取得したセット:(4、1、2、3、5)

Javaでセットを並べ替える
JavaのSetコレクションには、直接ソートする方法がありません。したがって、セットオブジェクトのコンテンツを並べ替えたり並べ替えたりするには、いくつかの間接的なアプローチに従う必要があります。ただし、セットオブジェクトがTreeSetの場合は例外です。
TreeSetオブジェクトは、デフォルトで順序付きセットを提供します。したがって、順序付けられた要素のセットに熱心な場合は、TreeSetを選択する必要があります。ために HashSet またはLinkedHashSetオブジェクトの場合、セットをListに変換できます。 Collections.sort()メソッドを使用してリストを並べ替えてから、リストを設定に戻します。
このアプローチは、以下のJavaプログラムに示されています。
import java.util.Arrays; import java.util.Collections; import java.util.*; public class Main{ public static void main(String() args) { //Declare a set and initialize it with unsorted list HashSet evenNumSet = new LinkedHashSet( Arrays.asList(4,8,6,2,12,10,62,40,36) ); //print the unsorted set System.out.println('Unsorted Set: ' + evenNumSet); //convert set to list List numList = new ArrayList(evenNumSet); //Sort the list using Collections.sort () method Collections.sort(numList); //convert set to list evenNumSet = new LinkedHashSet(numList); //convert list to set //Print the sorted set System.out.println('Sorted Set:' + evenNumSet); } }出力:
未分類セット:(4、8、6、2、12、10、62、40、36)
ソートされたセット:(2、4、6、8、10、12、36、40、62)

Javaで設定されたリストと
リストとセットの違いについて説明しましょう。
| リスト | セットする |
|---|---|
| ヌル値は許可されます。 | 許可されるnull値は1つだけです。 |
| リストインターフェイスを実装します。 | Setインターフェースを実装します。 |
| レガシークラスVectorが含まれています。 | レガシークラスはありません。 |
| ArrayList、LinkedListは、リストインターフェイスの実装です。 | HashSet、TreeSet、LinkedHashSetはSetの実装です。 |
| 要素の順序付けられたシーケンス。 | 個別の要素の順序付けられていないコレクション。 |
| 複製を許可します。 | 重複は許可されていません。 |
| 要素の位置に従って要素にアクセスできます。 | 位置アクセスなし。 |
| リストインターフェイスで定義された新しいメソッド。 | Setインターフェースで定義された新しいメソッドはありません。コレクションインターフェイスメソッドは、Setサブクラスで使用されます。 |
| ListIteratorを使用して、順方向および逆方向にトラバースできます。 | Iteratorを使用すると、順方向にのみ移動できます。 |
よくある質問
Q#1)Javaのセットとは何ですか?
回答: セットは、一意の要素の順序付けられていないコレクションであり、通常、数学におけるセットの概念をモデル化します。
セットは、コレクションインターフェイスを拡張するインターフェイスです。これには、コレクションインターフェイスから継承するメソッドが含まれています。セットインターフェースは制限を追加するだけです。つまり、重複は許可されません。
Q#2)セットはJavaで注文されていますか?
回答: いいえ。Javaセットは注文されていません。位置アクセスも提供しません。
Q#3)セットに重複を含めることはできますか?
回答: セットは一意の要素のコレクションであり、重複することはできません。
Windows8でbinファイルを開く方法
Q#4)Java Setは反復可能ですか?
回答: はい。 setインターフェースはIterableインターフェースを実装しているため、forEachループを使用してsetをトラバースまたは反復できます。
Q#5)セットでNULLは許可されていますか?
回答: セットはnull値を許可しますが、HashSetやLinkedHashSetなどのセット実装では最大で1つのnull値を許可します。 TreeSetの場合、nullが指定されていると、ランタイム例外がスローされます。
結論
このチュートリアルでは、JavaのSetインターフェイスに関連する一般的な概念と実装について説明しました。
setインターフェースには新しいメソッドが定義されていませんが、Collectorインターフェースのメソッドを使用し、重複する値を禁止するための実装を追加するだけです。このセットでは、最大で1つのnull値を使用できます。
以降のチュートリアルでは、HashSetやTreeSetなどのSetインターフェイスの特定の実装について説明します。
=> ゼロからJavaを学ぶには、ここにアクセスしてください。