โถ 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์ ์ถ๊ฐํ ๋ ์ด๋ค ๊ธฐ์ค์ผ๋ก ๋น๊ตํ ๊ฒ์ธ์ง๋ฅผ ๊ตฌํํด ์ฃผ์ด์ผ ํ๋ค.
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java-๊ธฐ์ด] Map ์ธํฐํ์ด์ค (0) | 2021.02.22 |
---|---|
[Java-๊ธฐ์ด] Comparable ์ธํฐํ์ด์ค์ Comparator ์ธํฐํ์ด์ค (0) | 2021.02.22 |
[Java-๊ธฐ์ด] Iterator๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ฅผ ์ํํ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋ (0) | 2021.02.22 |
[Java-๊ธฐ์ด] ArrayList๋ก ์คํ๊ณผ ํ ๊ตฌํํ๊ธฐ (0) | 2021.02.21 |
[Java-๊ธฐ์ด] List ์ธํฐํ์ด์ค (0) | 2021.02.21 |
๋๊ธ