Setコレクションクラス
Setコレクションクラス
Setインタフェースを実装するクラスは,要素の格納順序を保持せず,同一要素の重複格納を許可しないことを特徴とする.(nullは1つしか保存できません.)オブジェクト全体を操作する場合は、反復器を使用する必要があります.
Setインタフェースメソッド
メソッドは、boolean add(E E)が所与のオブジェクトを保存し、正常に保存された場合はtrueであることを示します.重複オブジェクトの場合はfalse boolean contains(Object o)で指定したオブジェクトが保存されているかどうかを返しますBoolean isEmpty()セットが空かどうか、Iterar
HashSet<E>クラス
JDK 1.2から提供されるクラスは,ハッシュアルゴリズム(hashアルゴリズム)を用いるため探索速度が速い.内部にはHashMapインスタンスを使用して要素を格納します.
Setインタフェースが実装されているため、要素の格納順序は保持されず、格納順序を保持する必要がある場合はLinkedHashSetクラスを使用することができる.(JDK 1.4より提供開始)
繰り返し検査方法
hashCode()の戻り値が同じでequals()の戻り値がtrueの場合、繰り返しとみなされます.
ハッシュアルゴリズム
ハッシュ関数を使用して、ハッシュテーブル(hash table)にデータを格納および取得するアルゴリズム.
Javaでは、配列と接続リストとして実装されます.
格納するデータのキー値をハッシュ関数に入れ、配列のインデックスを求め、そのインデックスの接続リストにデータを格納します.
プロシージャの追加
class Animal {
String species;
String habitat;
Animal(String species, String habitat) {
this.species = species;
this.habitat = habitat;
}
public int hashCode() { return (species + habitat).hashCode(); }
public boolean equals(Object obj) {
if(obj instanceof Animal) {
Animal temp = (Animal)obj;
return species.equals(temp.species) &&
habitat.equals(temp.habitat);
} else {
return false;
}
}
}
public class Set02 {
public static void main(String[] args) {
HashSet<Animal> hs = new HashSet<Animal>();
hs.add(new Animal("고양이", "육지"));
hs.add(new Animal("고양이", "육지"));
hs.add(new Animal("고양이", "육지"));
System.out.println(hs.size()); // 1
}
}
TreeSet<E>クラス
データはソートされた二元探索ツリーの形で要素が格納されるため,追加削除などの基本動作時間が速い.したがって、奇形機によって要素に順次アクセスすることで、値をソート順にアクセスできます.
JDK 1.2から提供され、NavigableSetインターフェースはRed−Black Treeとして実装される.
このクラスではSetインタフェースも実装されているため,要素の順序にかかわらず重複する値の格納は許されない.
例
TreeSet<Integer> ts = new TreeSet<Integer>();
// add() 메소드를 이용한 요소의 저장
ts.add(30);
ts.add(40);
ts.add(20);
ts.add(10);
// Enhanced for 문과 get() 메소드를 이용한 요소의 출력
for (int e : ts) {
System.out.print(e + " ");
}
// remove() 메소드를 이용한 요소의 제거
ts.remove(40);
// iterator() 메소드를 이용한 요소의 출력
Iterator<Integer> iter = ts.iterator();
while (iter.hasNext()) {
System.out.print(iter.next() + " ");
}
// size() 메소드를 이용한 요소의 총 개수
System.out.println("이진 검색 트리의 크기 : " + ts.size());
// subSet() 메소드를 이용한 부분 집합의 출력
① System.out.println(ts.subSet(10, 20));
② System.out.println(ts.subSet(10, true, 20, true));
サブセット()メソッド
①第1の場合、第1のパラメータ値に対応する要素から第2のパラメータ値に対応する要素に戻る前.
②回の場合、コールに両端の要素が含まれているかを明確にする.
Reference
http://tcpschool.com/java/java_collectionFramework_set
Reference
この問題について(Setコレクションクラス), 我々は、より多くの情報をここで見つけました https://velog.io/@namgeon1106/Set-컬렉션-클래스テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol