[Java-κΈ°μ΄] set μΈν°νμ΄μ€
βΆ set μΈν°νμ΄μ€
β
*HashSet ν΄λμ€
HashSet ν΄λμ€λ μ§ν© μλ£ κ΅¬μ‘°λ₯Ό ꡬννλ©° μ€λ³΅μ νμ©νμ§ μλλ€.
β
β
HashSetTest.java
package collection.hashset;
import java.util.HashSet;
public class HashSetTest {
public static void main(String[] args) {
HashSet<String> hashSet = new HashSet<String>();
hashSet.add(new String("μμ μ"));
hashSet.add(new String("λ°νμ "));
hashSet.add(new String("νμ°μ"));
hashSet.add(new String("κ°κ°μ°¬"));
hashSet.add(new String("κ°κ°μ°¬"));
System.out.println(hashSet);
}
}
<μ€ν κ²°κ³Ό>

-κ°κ°μ°¬μ΄ 1λͺ λ§ μΆλ ₯λ¨.
*HashSetλ₯Ό νμ©ν΄ νμ κ΄λ¦¬ νλ‘κ·Έλ¨ κ΅¬ννκΈ°
β
MemberHashSet.java
package collection.hashset;
import java.util.HashSet;
import java.util.Iterator;
import collection.Member;
public class MemberHashSet {
private HashSet<Member> hashSet;
public MemberHashSet() {
hashSet = new HashSet<Member>();
}
public void addMember(Member member) { // HashSetμ νμ μΆκ°
hashSet.add(member);
}
public boolean removeMember(int memberID) { // λ§€κ°λ³μλ‘ λ°μ νμ μμ΄λμ ν΄λΉνλ νμ μμ
Iterator<Member> ir = hashSet.iterator();
while (ir.hasNext()) {
Member member = ir.next(); // νμμ νλμ© κ°μ Έμμ
int tempId = member.getMemberID(); // μμ΄λ λΉκ΅
if (tempId == memberID) { // κ°μ μμ΄λμΈ κ²½μ°
hashSet.remove(member); // νμ μμ
return true;
}
}
System.out.println(memberID + "κ° μ‘΄μ¬νμ§ μμ΅λλ€.");
return false;
}
public void showAllMember() {
for (Member member : hashSet) {
System.out.println(member);
}
System.out.println();
}
}
-νμμ μμ ν λ μ°λ remove( ) λ©μλκ° ArrayListμλ μ’ λ€λ₯΄λ€. ArrayListμμλ get(i) λ©μλλ₯Ό μ¬μ©ν΄ iλ²μ§Έμ ν΄λΉνλ νλͺ©μ μμ νμ§λ§ HashSetμμλ ν΄λΉνλ μμ΄λλ₯Ό κ°μ§ νμμ μ°ΎκΈ° μν΄ Iteratorλ₯Ό μ¬μ©νλ€.
β
β
MemberHashSetTest.java
package collection.hashset;
import collection.Member;
public class MemberHashSetTest {
public static void main(String[] args) {
MemberHashSet memberHashSet = new MemberHashSet();
Member memberLee = new Member(1001, "μ΄μ§μ");
Member memberSon = new Member(1002, "μλ―Όκ΅");
Member memberPart = new Member(1003, "λ°μν€");
memberHashSet.addMember(memberLee);
memberHashSet.addMember(memberSon);
memberHashSet.addMember(memberPart);
memberHashSet.showAllMember();
Member memberHong = new Member(1003, "νκΈΈλ"); // μμ΄λ μ€λ³΅ νμ μΆκ°
memberHashSet.addMember(memberHong);
memberHashSet.showAllMember();
}
}
<μ€ν κ²°κ³Ό>

-κ°μ μμ΄λ 1003μ κ°μ§ λ°μν€κ³Ό νκΈΈλμ΄ κ·Έλλ‘ μΆλ ₯λμλ€
-κ°μ²΄κ° λμΌν κ²½μ°μ λν μ²λ¦¬ λ°©λ²μ ꡬνν΄μ€μΌν¨
β
β
β
*κ°μ²΄κ° λμΌν¨μ ꡬννκΈ°
κΈ°λ³Έμ μΌλ‘ μΈμ€ν΄μ€ μ£Όμκ° κ°μΌλ©΄ κ°μ κ°μ²΄μ΄λ€.
Member ν΄λμ€μ equals( ) λ©μλμ hashCode( ) λ©μλλ₯Ό μ μ μνμ¬ νμ μμ΄λκ° κ°μΌλ©΄ κ°μ νμμμ ꡬνν΄ μ£Όμ.
package collection;
public class Member {
private int memberID;
private String memberName;
...
@Override
public int hashCode() {
return memberID; // HashCode() λ©μλκ° νμ μμ΄λλ₯Ό λ°ννλλ‘ μ¬μ μ
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Member) {
Member member = (Member) obj;
if (this.memberID == member.memberID) // λ§€κ°λ³μλ‘ λ°μ νμ μμ΄λκ° μμ μ νμ μμ΄λμ κ°λ€λ©΄ true λ°ν
return true;
else
return false;
}
return false;
}
}
β<μ€ν κ²°κ³Ό>

β
ββ
β
*TreeSet ν΄λμ€
TreeSetμ μλ£μ μ€λ³΅μ νμ©νμ§ μμΌλ©΄μ μΆλ ₯ κ²°κ³Ό κ°μ μ λ ¬νλ ν΄λμ€μ΄λ€.
β
TreeSetTest.java
package collection.treeset;
import java.util.TreeSet;
public class TreeSetTest {
public static void main(String[] args) {
TreeSet<String> treeSet = new TreeSet<String>();
treeSet.add("νκΈΈλ");
treeSet.add("κ°κ°μ°¬");
treeSet.add("μ΄μμ ");
for (String str : treeSet) {
System.out.println(str);
}
}
}
<μ€ν κ²°κ³Ό>

β
*μ΄μ§ κ²μ νΈλ¦¬
νΈλ¦¬λ μλ£ μ¬μ΄μ κ³μΈ΅ ꡬ쑰λ₯Ό λνλ΄λ μλ£ κ΅¬μ‘°.
νΈλ¦¬ μλ£ κ΅¬μ‘°μμ κ° μλ£κ° λ€μ΄κ°λ 곡κ°μ 'λ Έλ'λΌκ³ νλ€. κ·Έλ¦¬κ³ μμλλ‘ μ°κ²°λ λ Έλμ κ΄κ³λ₯Ό 'λΆλͺ¨-μμ λ Έλ'λΌκ³ νλ€. μ΄μ§ κ²μ νΈλ¦¬λ λ Έλμ μ μ₯λλ μλ£μ μ€λ³΅μ νμ©νμ§ μκ³ , λΆλͺ¨κ° κ°μ§λ μμ λ Έλμ μκ° 2κ° μ΄νμ΄λ€. λν μΌμͺ½μ μμΉνλ μμ λ Έλλ λΆλͺ¨ λ Έλλ³΄λ€ νμ μμ κ°μ κ°μ§λ€. λ°λλ‘ μ€λ₯Έμͺ½μ λμΈ μμ λ Έλλ λΆλͺ¨ λ Έλλ³΄λ€ νμ ν° κ°μ κ°μ§λ€. λ°λΌμ μ΄λ€ νΉμ κ°μ μ°ΎμΌλ € ν λ ν μͺ½ λ Έλμ λΉκ΅ν΄ λΉκ΅ν λ Έλλ³΄λ€ μμ κ°μ΄λ©΄ μΌμͺ½ μμ λ Έλ λ°©ν₯μΌλ‘, κ·Έλ μ§ μμΌλ©΄ μ€λ₯Έμͺ½ μμ λ Έλ λ°©ν₯μΌλ‘ μ΄λνλ€.
λ°λΌμ λΉκ΅ λ²μκ° νκ· 1/2λ§νΌμ© μ€μ΄λ€μ΄ ν¨κ³Όμ μΌλ‘ μλ£λ₯Ό κ²μν μ μλ€.
β
β
β
*TreeSetμ νμ©ν΄ νμ κ΄λ¦¬ νλ‘κ·Έλ¨ κ΅¬ννκΈ°
β
MemberTreeSet.java
package collection.treeset;
import java.util.Iterator;
import java.util.TreeSet;
import collection.Member;
public class MemberTreeSet {
private TreeSet<Member> treeSet;
public MemberTreeSet() {
treeSet = new TreeSet<Member>();
}
public void addMember(Member member) {
treeSet.add(member);
}
public boolean removeMember(int memberID) {
Iterator<Member> ir = treeSet.iterator();
while (ir.hasNext()) {
Member member = ir.next();
int tempId = member.getMemberID();
if (tempId == memberID) {
treeSet.remove(member);
return true;
}
}
System.out.println(memberID + "κ° μ‘΄μ¬νμ§ μμ΅λλ€.");
return false;
}
public void showAllMember() {
for (Member member : treeSet) {
System.out.println(member);
}
System.out.println();
}
}
MemberTreeSetTest.java
package collection.treeset;
import collection.Member;
public class MemberTreeSetTest {
public static void main(String[] args) {
MemberTreeSet memberTreeSet = new MemberTreeSet();
Member memberPark = new Member(1003, "λ°μν€");
Member memberLee = new Member(1001, "μ΄μ§μ");
Member memberSon = new Member(1002, "μλ―Όκ΅");
memberTreeSet.addMember(memberLee);
memberTreeSet.addMember(memberSon);
memberTreeSet.addMember(memberPark);
memberTreeSet.showAllMember();
Member memberHong = new Member(1003, "νκΈΈλ"); // μμ΄λ μ€λ³΅ νμ μΆκ°
memberTreeSet.addMember(memberHong);
memberTreeSet.showAllMember();
}
}
β<μ€ν κ²°κ³Ό>

-μ μ€λ₯ λ΄μ©μ μ΄ν΄λ³΄λ©΄ Member ν΄λμ€κ° Comparable μΈν°νμ΄μ€λ₯Ό ꡬννμ§ μμλ€κ³ λμ¨λ€.
Comparable μΈν°νμ΄μ€λ₯Ό ꡬννμ§ μμλ€λ μλ―Έλ μ°λ¦¬κ° λ§λ Member ν΄λμ€λ₯Ό TreeSetμ μμλ‘ μΆκ°ν λ μ΄λ€ κΈ°μ€μΌλ‘ λ Έλλ₯Ό λΉκ΅νμ¬ νΈλ¦¬λ₯Ό νμ±ν΄μΌ νλμ§λ₯Ό ꡬννμ§ μμλ€λ λ»μ΄λ€.
λ°λΌμ νμμ TreeSetμ μΆκ°ν λ μ΄λ€ κΈ°μ€μΌλ‘ λΉκ΅ν κ²μΈμ§λ₯Ό ꡬνν΄ μ£Όμ΄μΌ νλ€.