
์ค๋ณต๋ ์์๋ฅผ ์ ์ฅํ์ง ์๊ณ ์ ์ฅ์์๋ฅผ ์ ์ง ํ์ง ์์ ์์ ์ ์งํ๊ณ ์ ํ๋ค๋ฉด LinkedHashSet์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
| ๋ฉ์๋ | ์ค๋ช |
|---|---|
HashSet() | ๋น์ด์๋ HashSet์ ์์ฑํฉ๋๋ค. |
HashSet(Collection c) | ์ฃผ์ด์ง Collection์ ์์๋ก ์ด๊ธฐํ๋ HashSet์ ์์ฑํฉ๋๋ค. |
HashSet(int initialCapacity) | ์ง์ ๋ ์ด๊ธฐ ์ฉ๋์ผ๋ก HashSet์ ์์ฑํฉ๋๋ค. |
HashSet(int initialCapacity, float loadFactor) | ์ง์ ๋ ์ด๊ธฐ ์ฉ๋๊ณผ ๋ก๋ ํฉํฐ๋ก HashSet์ ์์ฑํฉ๋๋ค. |
| boolean add(Object o) | ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์ ์ฅํฉ๋๋ค. |
| boolean addAll(Collection c) | ์ง์ ๋ ์ปฌ๋ ์ ์ ๋ชจ๋ ์์๋ฅผ ์ด HashSet์ ์ถ๊ฐํฉ๋๋ค. |
| void clear() | ์ด HashSet์์ ๋ชจ๋ ์์๋ฅผ ์ ๊ฑฐํฉ๋๋ค. |
| boolean contains(Object o) | ์ง์ ๋ ์์๊ฐ ์ด HashSet์ ์๋์ง ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค. |
| boolean containsAll(Collectionc) | ์ด HashSet์ ์ง์ ๋ ์ปฌ๋ ์ ์ ๋ชจ๋ ์์๊ฐ ํฌํจ๋์ด ์๋์ง ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค. |
| boolean isEmpty() | ์ด HashSet์ด ๋น์ด ์๋์ง ์ฌ๋ถ๋ฅผ ๋ฐํํฉ๋๋ค. |
| Iterator iterator() | ์ด HashSet์ ๋ํ ๋ฐ๋ณต์๋ฅผ ๋ฐํํฉ๋๋ค. |
| boolean remove(Object o) | ์ง์ ๋ ์์๋ฅผ ์ด HashSet์์ ์ ๊ฑฐํฉ๋๋ค. |
| boolean removeAll(Collection c) | ์ด HashSet์์ ์ง์ ๋ ์ปฌ๋ ์ ์ ๋ชจ๋ ์์๋ฅผ ์ ๊ฑฐํฉ๋๋ค. |
| boolean retainAll(Collection c) | ์ด HashSet์์ ์ง์ ๋ ์ปฌ๋ ์ ์ ํฌํจ๋ ์์๋ง ์ ์งํ๊ณ ๋ค๋ฅธ ์์๋ ์ ๊ฑฐํฉ๋๋ค. |
| int size() | ์ด HashSet์ ์๋ ์์์ ์๋ฅผ ๋ฐํํฉ๋๋ค. |
| Object[ ] toArray() | ์ด HashSet์ ์๋ ์์๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํํฉ๋๋ค. |
| Object[ ] toArray(Object[ ] a) | ์ด HashSet์ ์๋ ์์๋ฅผ ์ง์ ๋ ๋ฐฐ์ด์ ๋ณต์ฌํ์ฌ ๋ฐํํฉ๋๋ค. |
import java.util.HashSet;
import java.util.Set;
public class C01HashSet {
public static void main(String[] args) {
Object[] objArr ={"1", "2","2","3","3","3","4","4"};
Set set = new HashSet();
for (int i = 0; i < objArr.length; i++){
set.add(objArr[i]);
}
System.out.println(set);
}
}
add( ) : ๊ฐ์ฒด๋ฅผ ์ถ๊ฐํ ๋ HashSet์ ์ด๋ฏธ ๊ฐ์ ๊ฐ์ฒด๊ฐ ์์ผ๋ฉด ์ค๋ณต์ผ๋ก ๊ฐ์ฃผํ๊ณ ์ ์ฅํ์ง ์์ต๋๋ค.๐ฆ ํฉ์งํฉ, ๊ต์งํฉ, ์ฐจ์งํฉ ๊ตฌํํ๊ธฐ
import java.util.HashSet;
import java.util.Iterator;
public class C04HashSet {
public static void main(String[] args) {
HashSet setA = new HashSet();
HashSet setB = new HashSet();
HashSet setHab = new HashSet();
HashSet setKyo = new HashSet();
HashSet setCha = new HashSet();
setA.add("1");setA.add("2");setA.add("3");setA.add("4");setA.add("5");
System.out.println("A="+setA);
setB.add("4");setB.add("5");setB.add("6");setB.add("7");setB.add("8");
System.out.println("B="+setB);
Iterator it = setB.iterator();
while (it.hasNext()){
Object tmp = it.next();
if(setA.contains(tmp)) setKyo.add(tmp);
}
// setA.retainAll(setB); //๊ต์งํฉ
System.out.println("๊ต์งํฉ = "+setKyo);
it = setA.iterator();
while (it.hasNext()){
Object tmp = it.next();
if(!setB.contains(tmp)){
setCha.add(tmp);
}
}
// setA.removeAll(setB); //์ฐจ์งํฉ
System.out.println("์ฐจ์งํฉ = " +setCha);
it = setA.iterator();
while (it.hasNext()){
setHab.add(it.next());
}
it = setB.iterator();
while (it.hasNext()){
setHab.add(it.next());
}
// setA.addAll(setB); //ํฉ์งํฉ
System.out.println("ํฉ์งํฉ = " +setHab);
}
}
๋ง์ฝ์ ์ ์ฅ๋ ์์๋ฅผ ์ ์งํ๊ณ ์ถ๋ค๋ฉด HashSet ๋์ LinkedHashSet์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
import java.util.*;
public class C02HashSet {
public static void main(String[] args) {
Set set = new HashSet();
for(int i = 0; set.size()<6; i++){
int num = (int)(Math.random()*45)+1;
set.add(num);
}
System.out.println(set);
List list = new LinkedList(set);
Collections.sort(list);
System.out.println(list); //์ค๋ฆ์ฐจ์ ์ ๋ ฌ
}
}
๐ฆ equals์ hashCode
boolean add(Object o)๋ ์ ์ฅํ ๊ฐ์ฒด์ equals()์ hashCode()๋ฅผ ํธ์ถ -> equals()์ hashCode()๊ฐ ์ค๋ฒ๋ผ์ด๋ฉ ๋์ด ์์ด์ผ ํฉ๋๋ค.import java.util.HashSet;
import java.util.Objects;
public class C03HashSet {
public static void main(String[] args) {
HashSet set = new HashSet();
set.add("abc");
set.add("abc"); //์ค๋ณต
set.add(new Person("David", 10));
set.add(new Person("David", 10)); //์ค๋ณต
System.out.println(set);
}
}
class Person{
String name;
int age;
Person(String name, int age){
this.name = name;
this.age=age;
}
public String toString(){
return name + " : " + age;
}
@Override
public boolean equals(Object o) {
if (!(o instanceof Person person)) return false;
Person p = (Person) o;
//๋ ์์ ์ ์ด๋ฆ๊ณผ ๋์ด๋ฅผ p์ ๋น๊ต
return this.name.equals(p.name)&&this.age==p.age;
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}
- ๋ฒ์ ๊ฒ์๊ณผ ์ ๋ ฌ์ ์ ๋ฆฌํ ์ปฌ๋ ์ ํด๋์ค์ ๋๋ค. TreeSet์ ์ฐ๋ฉด ์ ๋ ฌ์ ์๋์ผ๋ก ๋ฉ๋๋ค.
์ด์ง ๊ฒ์ ํธ๋ฆฌ๋ผ๋ ์๋ฃ๊ตฌ์กฐ์ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค.
๐ฆ ์ด์ง ๊ฒ์ ํธ๋ฆฌ
์ด์ง ํธ๋ฆฌ๋ ๋งํฌ๋ ๋ฆฌ์คํธ์ฒ๋ผ ์ฌ๋ฌ ๊ฐ์ ๋
ธ๋๊ฐ ์๋ก ์ฐ๊ฒฐ๋ ๊ตฌ์กฐ์ด๋ฉฐ ๊ฐ ๋
ธ๋์ ์ต๋ 2๊ฐ์ ๋
ธ๋๋ฅผ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ๋ฃจํธ๋ผ๊ณ ๋ถ๋ฆฌ๋ ํ๋์ ๋
ธ๋์์ ์์ํด์ ํ์ฅํด ๋๊ฐ ๋ถ๋ชจ-์์๊ด๊ณ๋ฅผ ๋ํ๋ฉ๋๋ค.
class TreeNode{
TreeNode left;
Object element;
TreeNode right;
}
์ด์ง ๊ฒ์ ํธ๋ฆฌ๋ ๋ถ๋ชจ๋
ธ๋์ ์ผ์ชฝ์๋ ๋ถ๋ชจ๋
ธ๋์ ๊ฐ๋ณด๋ค ์์ ๊ฐ์ ์์๋
ธ๋๋ฅผ ์ค๋ฅธ์ชฝ์๋ ํฐ ๊ฐ์ ์์๋
ธ๋๋ฅผ ์ ์ฅํ๋ ์ด์งํธ๋ฆฌ์
๋๋ค.
๐ฆ TreeSet์ ์์ฑ์์ ๋ฉ์๋
| ์์ฑ์์ ๋ฉ์๋ | ์ค๋ช |
|---|---|
TreeSet() | ๋น์ด ์๋ TreeSet์ ์์ฑํ๋ค. |
TreeSet(Collection<? extends E> c) | ์ง์ ๋ ์ปฌ๋ ์ ์ ์์๋ฅผ ํฌํจํ๋ TreeSet์ ์์ฑํ๋ค. |
TreeSet(Comparator<? super E> comparator) | ์์๋ฅผ ๋น๊ตํ๊ธฐ ์ํด ์ฌ์ฉํ Comparator๋ฅผ ์ง์ ํ์ฌ TreeSet์ ์์ฑํ๋ค. |
TreeSet(SortedSet<E> s) | ์ง์ ๋ SortedSet์ ์์๋ฅผ ํฌํจํ๋ TreeSet์ ์์ฑํ๋ค. |
boolean add(E e) | ์ง์ ๋ ์์๋ฅผ TreeSet์ ์ถ๊ฐํ๋ค. |
boolean addAll(Collection<? extends E> c) | ์ง์ ๋ ์ปฌ๋ ์ ์ ๋ชจ๋ ์์๋ฅผ TreeSet์ ์ถ๊ฐํ๋ค. |
void clear() | TreeSet์์ ๋ชจ๋ ์์๋ฅผ ์ ๊ฑฐํ๋ค. |
Object clone() | TreeSet์ ์์ ๋ณต์ฌ๋ณธ์ ๋ฐํํ๋ค. |
Comparator<? super E> comparator() | TreeSet์์ ์ฌ์ฉ ์ค์ธ Comparator๋ฅผ ๋ฐํํ๋ค. |
boolean contains(Object o) | ์ง์ ๋ ์์๊ฐ TreeSet์ ์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ๋ค. |
Iterator<E> descendingIterator() | ์์์ ๋ด๋ฆผ์ฐจ์ ์์๋ก ๋ฐ๋ณตํ๋ Iterator๋ฅผ ๋ฐํํ๋ค. |
NavigableSet<E> descendingSet() | ์์์ ๋ด๋ฆผ์ฐจ์ ์์๋ก ์ ๋ ฌ๋ NavigableSet์ ๋ฐํํ๋ค. |
E first() | TreeSet์ ์ฒซ ๋ฒ์งธ (๊ฐ์ฅ ์์) ์์๋ฅผ ๋ฐํํ๋ค. |
E floor(E e) | ์ฃผ์ด์ง ์์์ ๊ฐ๊ฑฐ๋ ์์ ๊ฐ์ฅ ํฐ ์์๋ฅผ ๋ฐํํ๋ค. |
SortedSet<E> headSet(E toElement) | ์ง์ ๋ ์์๋ณด๋ค ์์ ์์๋ก ์ด๋ฃจ์ด์ง ๋ทฐ๋ฅผ ๋ฐํํ๋ค. |
NavigableSet<E> headSet(E toElement, boolean inclusive) | ์ง์ ๋ ์์๋ณด๋ค ์์ ์์๋ก ์ด๋ฃจ์ด์ง ๋ทฐ๋ฅผ ๋ฐํํ๋ค. (inclusive์ ๋ฐ๋ผ ํฌํจ ์ฌ๋ถ ๊ฒฐ์ ) |
E higher(E e) | ์ฃผ์ด์ง ์์๋ณด๋ค ํฐ ๊ฐ์ฅ ์์ ์์๋ฅผ ๋ฐํํ๋ค. |
boolean isEmpty() | TreeSet์ด ๋น์ด ์๋์ง ํ์ธํ๋ค. |
Iterator<E> iterator() | ์์์ ์ค๋ฆ์ฐจ์ ์์๋ก ๋ฐ๋ณตํ๋ Iterator๋ฅผ ๋ฐํํ๋ค. |
E last() | TreeSet์ ๋ง์ง๋ง (๊ฐ์ฅ ํฐ) ์์๋ฅผ ๋ฐํํ๋ค. |
E lower(E e) | ์ฃผ์ด์ง ์์๋ณด๋ค ์์ ๊ฐ์ฅ ํฐ ์์๋ฅผ ๋ฐํํ๋ค. |
E pollFirst() | TreeSet์์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํํ๋ค. |
E pollLast() | TreeSet์์ ๋ง์ง๋ง ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํํ๋ค. |
boolean remove(Object o) | ์ง์ ๋ ์์๋ฅผ TreeSet์์ ์ ๊ฑฐํ๋ค. |
int size() | TreeSet์ ์์ ์๋ฅผ ๋ฐํํ๋ค. |
NavigableSet<E> subSet(E fromElement, boolean fromInclusive, E toElement, boolean toInclusive) | ์ง์ ๋ ๋ฒ์์ ์์๋ก ์ด๋ฃจ์ด์ง ๋ทฐ๋ฅผ ๋ฐํํ๋ค. (fromInclusive์ toInclusive์ ๋ฐ๋ผ ํฌํจ ์ฌ๋ถ ๊ฒฐ์ ) |
SortedSet<E> subSet(E fromElement, E toElement) | ์ง์ ๋ ๋ฒ์์ ์์๋ก ์ด๋ฃจ์ด์ง ๋ทฐ๋ฅผ ๋ฐํํ๋ค. |
SortedSet<E> tailSet(E fromElement) | ์ง์ ๋ ์์์ ๊ฐ๊ฑฐ๋ ํฐ ์์๋ก ์ด๋ฃจ์ด์ง ๋ทฐ๋ฅผ ๋ฐํํ๋ค. |
NavigableSet<E> tailSet(E fromElement, boolean inclusive) | ์ง์ ๋ ์์์ ๊ฐ๊ฑฐ๋ ํฐ ์์๋ก ์ด๋ฃจ์ด์ง ๋ทฐ๋ฅผ ๋ฐํํ๋ค. (inclusive์ ๋ฐ๋ผ ํฌํจ ์ฌ๋ถ ๊ฒฐ์ ) |
Object[] toArray() | TreeSet์ ์์๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํํ๋ค. |
<T> T[] toArray(T[] a) | TreeSet์ ์์๋ฅผ ์ง์ ๋ ๋ฐฐ์ด์ ๋ณต์ฌํ์ฌ ๋ฐํํ๋ค. |
๐ฆ TreeSet ์์
import java.util.TreeSet;
public class C05TreeSet {
public static void main(String[] args) {
TreeSet set = new TreeSet();
String from = "b";
String to = "d";
set.add("abc"); set.add("alien"); set.add("bat");
set.add("car"); set.add("Car"); set.add("disc");
set.add("dzzzz"); set.add("dZZZZ"); set.add("fan");
System.out.println(set);
System.out.println("from = " + from+", to = "+to);
System.out.println("set.subSet(b,d) = " + set.subSet(from,to));
System.out.println("set.subSet(b,d) = " + set.subSet(from,to+"zzz")); //d๋ก ์์ํ๋ ๋จ์ด๋ค๊น์ง ํฌํจํ๊ณ ์ถ์ ๋ ๋ ๋ฒ์์ "zzz"
//์ด์ง ๊ฒ์ ํธ๋ฆฌ
TreeSet set1 = new TreeSet();
int[] scores = {40,30,80,90,95,85,75};
for (int i = 0; i<scores.length;i++){
set1.add(scores[i]);
}
System.out.println("50๋ณด๋ค ์์ ๊ฐ : "+set1.headSet(50));
System.out.println("50๋ณด๋ค ํฐ ๊ฐ : "+set1.tailSet(50));
}
}