ν°μ€ν 리 λ·°
π Set 컬λ μ ν΄λμ€
Set μΈν°νμ΄μ€λ₯Ό ꡬνν λͺ¨λ Set 컬λ μ ν΄λμ€λ λ€μκ³Ό κ°μ νΉμ§μ κ°μ§λλ€.
1. μμμ μ μ₯ μμλ₯Ό μ μ§νμ§ μλλ€.
2. κ°μ μμμ μ€λ³΅ μ μ₯μ νμ©νμ§ μλλ€.
λνμ μΈ Set 컬λ μ ν΄λμ€μ μνλ ν΄λμ€λ λ€μκ³Ό κ°μ΅λλ€.
1. HashSet<E>
2. TreeSet<E>
β HashSet<E> ν΄λμ€
HashSet ν΄λμ€λ Set 컬λ μ ν΄λμ€μμ κ°μ₯ λ§μ΄ μ¬μ©λλ ν΄λμ€ μ€ νλμ λλ€.
JDK1.2λΆν° μ 곡ν HashSet ν΄λμ€λ ν΄μ μκ³ λ¦¬μ¦(hash algorithm)μ μ¬μ©νμ¬ κ²μ μλκ° λ§€μ° λΉ λ¦ λλ€.
μ΄λ¬ν HashSet ν΄λμ€λ λ΄λΆμ μΌλ‘ HashMap μΈμ€ν΄μ€λ₯Ό μ΄μ©νμ¬ μμλ₯Ό μ μ₯ν©λλ€.
HashSet ν΄λμ€λ Set μΈν°νμ΄μ€λ₯Ό ꡬννλ―λ‘, μμλ₯Ό μμμ μκ΄μμ΄ μ μ₯νκ³ μ€λ³΅λ κ°μ μ μ₯νμ§ μμ΅λλ€.
HashSetμ λ€μκ³Ό κ°μ΄ μ¬μ©ν©λλ€.
HashSet<E> name = new HashSet<E>();
HashSetμ μμ μκ΄μμ΄, μ€λ³΅ μμ΄ κ°μ μ μ₯νλ€κ³ νμ΅λλ€.
λ€μ μ½λλ₯Ό ν΅ν΄ νμΈν΄ λ΄ μλ€.
HashSet<String> bloodTypeSet = new HashSet<String>();
bloodTypeSet.add("A");
bloodTypeSet.add("B");
bloodTypeSet.add("O");
bloodTypeSet.add("AB");
bloodTypeSet.add("AB");
bloodTypeSet.add("AB");
bloodTypeSet.add("AB");
bloodTypeSet.add("AB");
bloodTypeSet.add("AB");
bloodTypeSet.add("AB");
System.out.println(bloodTypeSet); // [A, AB, B, O]
μ€λ³΅μ΄ μμ΄ κ°μ μ μ₯νλ€λ κ²μ νμΈνμ§λ§, λΆλͺ ν μ½μ μ μμκ° μλ€κ³ νλλ° μΆλ ₯λ κ²°κ³Όλ₯Ό λ³΄κ² λλ©΄ 무μΈκ° μμκ° μλ κ²μ²λΌ μΆλ ₯μ΄ λμμ΅λλ€.
μλ°μμλ μμκ° μλ€ = κ°μ Έμ¬ μ μλ€
μΈλ° λ체 μ΄λ»κ² κ°μ Έμ¨ κ²μ΄λ©° μ΄λ»κ² μ λ κ² μΆλ ₯μ΄ λ κ±ΈκΉμ?
μ¬μ€ toString()μ΄ μ¬μ μ λ κ²μΈλ°μ.
μ¬μ μλ μ½λλ₯Ό μ΄ν΄λ³΄λ©΄ λ€μκ³Ό κ°μ΅λλ€.
μ μ½λμμ λ λ²μ¬ μ€ μ€λ₯Έμͺ½ ν iterator() μμλ .thisκ° μλ΅λμ΄ μμ΅λλ€.
μ¦, μ΄ λ©μλμ μ μ©μν¨ κ°μ²΄μ μ£Όμκ°μ΄ λ€μ΄μμ΅λλ€.
λ€μλ§ν΄, μ°λ¦¬ μμ μμ λ§νλ©΄ bloodTypeSetμ΄λΌλ κ°μ²΄μ μ£Όμκ°μ iterator() λ©μλλ₯Ό μ μ©μν¨ κ²μ λλ€.
iteratorλ iteratorλ§μ μμλ₯Ό λΆμ¬ν΄ μ€λλ€.
μ°λ¦¬κ° μκ³ μλ μμμΈ index λ§κ³ λ iteratorλ§μ μμκ° μλλ°μ.
μ΄ μμλ λ€μ, λ€μ, λ€μ μ λλ‘ μ΄ν΄ν μ μμ΅λλ€.
λ°λΌμ μμκ° μλ Setμ΄λΌλ νμ μμ iterator()λ₯Ό μ°λ μκ° Iterator νμ μΌλ‘ λ°λλ κ²μ λλ€.
μ΄μ μ΄ λ€μ λ€μ λ€μ μμλ₯Ό κ°μ Έμ€λ©΄μ [κ³Ό ] μ¬μ΄μ λ΄μλκ³ νλ©΄μ 보μ¬μ£Όλ κ²μ΄ toString()μ μ¬μ μν λ΄μ©μ΄μλ κ²μ λλ€.
κ·Έλ¬λ―λ‘ λ§μ½μ Setμ λ΄κ²¨ μλ μμ νλνλλ₯Ό μΆλ ₯νκ³ μΆλ€λ©΄ λ€μκ³Ό κ°μ λ°©λ²μ μ¬μ©νλ©΄ λ©λλ€.
Iterator<String> iter = bloodTypeSet.iterator();
while(iter.hasNext()) {
System.out.println(iter.next());
}
π μ΄λ―Έ μ‘΄μ¬νλ μμμΈμ§λ₯Ό νμ νλ λ°©λ² - hashCodeμ equals μ¬μ μμ κ΄ν΄μ
κΈ°μ΅λμλμ? μλ°μμλ κ°μ²΄λ₯Ό λ©λͺ¨λ¦¬μ ν λΉν΄μ μΆλ ₯μ ν΄λ³΄λ©΄ λ©λͺ¨λ¦¬ μ£Όμμ²λΌ 보μ΄λ ν΄μμ½λλ₯Ό μλ €μ£Όκ² λ©λλ€.
μ΄λ μ΄ ν΄μμ½λλ μ λ μ€λ³΅μ΄ μλ€κ³ νμ΅λλ€.
κ·Έλ°λ° λ§μ½ μ°λ¦¬κ° μ€μ μλΉμ€λ₯Ό νλ€κ³ νλ©΄ new Student(1, "νκΈΈλ")κ°μ²΄μ new Student(1, "νκΈΈλ")μ κ°λ€κ³ ν΄μΌν©λλ€.
κ·Έλ°λ° μλ° μ μ₯μμλ λ κ°μ²΄μ λ©λͺ¨λ¦¬ μ£Όμκ° λ€λ₯΄κΈ° λλ¬Έμ λ€λ₯΄λ€κ³ μλ €μ€κ²λλ€.
λ°λΌμ λ°λμ μ λ κ°μ²΄κ° κ°λ€κ³ νκ³ μΆλ€λ©΄ hashCode()μ equals() λ©μλλ₯Ό μ€λ²λΌμ΄λ© ν΄μ€μΌν©λλ€.
λ¨Όμ StudentλΌλ ν΄λμ€λ₯Ό νλ μμ±ν΄ λ³΄κ² μ΅λλ€.
public class Student {
private int number;
private String name;
public Student() {;}
public Student(int number, String, name) {
super();
this.number = number;
this.name = name;
}
}
μ΄μ hashCode()μ equals()λ₯Ό μ¬μ μνκΈ° μ μ κ°μ²΄λ₯Ό μμ±ν΄μ μ΄ λμ΄ κ°μμ§ νμΈν΄λ³΄κ² μ΅λλ€.
public class HashCodeTest {
public static void main(String[] args) {
Student student1 = new Student(1, "νκΈΈλ");
Student student2 = new Student(1, "νκΈΈλ");
System.out.println(student1.equals(student2)); // false
}
}
λΉμ°ν μμμ μ€λͺ νλ―μ΄ λ κ°μ²΄μ λ©λͺ¨λ¦¬ μ£Όμκ° λ€λ₯΄κΈ° λλ¬Έμ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό λΉκ΅ν΄μ£Όλ μλ°λ λ€λ₯΄λ€κ³ μλ €μ€ κ²μ λλ€.
μ΄μ Student ν΄λμ€λ‘ λμκ° hashCode()μ equals()λ₯Ό μ¬μ μ ν΄λ΄ μλ€.
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + number;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (number != other.number)
return false;
return true;
}
μ΄μ λ€μ μ HashCodeTest ν΄λμ€λ₯Ό μ€νν΄λ³΄λ©΄ μλμ κ°μ μΆλ ₯ νλ©΄μ λ³Ό μ μμ΅λλ€.
μ΄μ hashCode() μ equals() λ©μλλ₯Ό μ€λ²λΌμ΄λ© ν¨μΌλ‘μ¨ λμΌν ν΄λμ€μ νλλ₯Ό ν λΉ λ°μ λ κ°μ²΄μ κ°μ΄ λͺ¨λ κ°λ€λ©΄ κ°λ€κ³ νλ¨νκΈ° λλ¬Έμ
μ΄μ λ κ°μ²΄λ 'κ°λ€'λΌκ³ νλ¨λ©λλ€.
μλ₯Ό λ€μ΄ νμ Setμ΄ μλ€λ©΄ μ¬κΈ°μλ λμΌν νμμ μ λ³΄κ° λ€μ΄κ°λ©΄ μλ κ²μ λλ€.
λ§μ½ Setμμ μ΄λ―Έ μλ νμμ μ 보λ₯Ό λ€μ add νλλΌλ νλλ§μ΄ μ‘΄μ¬νκ² μ£ ?
Student student1 = new Student(1, "νκΈΈλ");
Student student2 = new Student(1, "νκΈΈλ");
HashMap<Student> studentSet = new HashMap<Student>();
studentSet.add(student1);
studentSet.add(student2);
System.out.println(studentSet.size()); // 1
β HashSetμΌλ‘ ArrayListμμμ μ€λ³΅λ μμλ₯Ό μ κ±°νλ λ°©λ²
ArrayList<Integer> datas = new ArrayList<Integer>(Arrays.asList(10, 30, 30, 30, 20, 10, 90));
HashSet<Integer> dataSet = new HashSet<Integer>(datas);
datas = new ArrayList<Integer>(dataSet);
System.out.println(datas); // [20, 10, 90, 30]
'λ°±μλ > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java] μλ°μ Map 컬λ μ ν΄λμ€ with JSON λ°μ΄ν° λ€λ£¨κΈ° (0) | 2023.02.16 |
---|---|
[Java] μλ°μ Stream (0) | 2023.02.15 |
[Java] μλ°μ List 컬λ μ ν΄λμ€ (0) | 2023.02.14 |
[Java] 컬λ μ νλ μμν¬(Collection Framework) - λ€μμ λ°μ΄ν°λ₯Ό μ½κ³ ν¨κ³Όμ μΌλ‘ μ²λ¦¬νμ (0) | 2023.02.13 |
[Java] μλ°μ Wrapper ν΄λμ€μ λν΄ μμ보μ (0) | 2023.02.09 |
- Total
- Today
- Yesterday
- λ₯λ¬λ
- νμ μ€ν¬λ¦½νΈ
- rtl
- styled-components
- μλ°μ€ν¬λ¦½νΈ κΈ°μ΄
- νλ‘ νΈμλ 곡λΆ
- μΈνλ°
- JSP
- μλ°
- react-query
- νλ‘μ νΈ νκ³
- frontend
- 리μ‘νΈ
- 리μ‘νΈ ν
- react
- νλ‘ νΈμλ
- λ°μ΄ν°λΆμ
- μλ°μ€ν¬λ¦½νΈ
- testing
- TypeScript
- jest
- Python
- λ¨Έμ λ¬λ
- νλ‘ νΈμλ κΈ°μ΄
- νμ΄μ¬
- λνλ§
- CSS
- HTML
- next.js
- μ€νμΌ μ»΄ν¬λνΈ styled-components
μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |