https://ybdeveloper.tistory.com/43
[JAVA] Collections Framework...1
κ°μ 컬λ μ νλ μμν¬μ λν μ λ°μ μΈ μ΄ν΄ Map, Set, List μ°¨μ΄μ μ λν μ΄ν΄ "μ΄λ€ μν©μ μ΄λ€ ν΄λμ€λ₯Ό μ¬μ©ν΄μΌ νλκ°?" κ° ν΄λμ€κ° κ°μ§κ³ μλ λ©μλ 보λ¨, μ λ°μ μΈ μ΄ν΄λ₯Ό μ€μ μΌλ‘ μ§ννλ€. Col..
ybdeveloper.tistory.com
Set μΈν°νμ΄μ€
Set μΈν°νμ΄μ€λ μ€λ³΅μ νμ©νμ§ μκ³ μ μ₯μμκ° μ μ§λμ§ μλ 컬λ μ ν΄λμ€λ₯Ό ꡬννλλ° μ¬μ©λ©λλ€. Set μΈν°νμ΄μ€λ₯Ό ꡬνν ν΄λμ€λ‘λ HashSet, TreeSet λ±μ΄ μμ΅λλ€.
HashSet
HashSetμ Set μΈν°νμ΄μ€λ‘ ꡬνν κ°μ₯ λνμ μΈ μ»¬λ μ μ΄λ©°, Set μΈν°νμ΄μ€μ νΉμ§λλ‘ HashSetμ μ€λ³΅λ μμλ₯Ό μ μ₯νμ§ μμ΅λλ€. HashSetμ μλ‘μ΄ μμλ₯Ό μΆκ°ν λλ addλ©μλλ addAllλ©μλλ₯Ό μ¬μ©νλλ°, λ§μΌ HashSetμ μ΄λ―Έ μ μ₯λμ΄ μλ μμμ μ€λ³΅λ μμλ₯Ό μΆκ°νκ³ μ νλ€λ©΄ μ΄ λ©μλλ€μ falseλ₯Ό λ°ννμ¬ μΆκ°μ μ€ν¨νλ€λ κ²μ μ립λλ€. μ΄λ¬ν HashSetμ νΉμ§μ μ΄μ©νλ©΄, 컬λ μ λ΄μ μ€λ³΅ μμλ€μ μ½κ² μ κ±°ν μ μμ£ .
ArrayListμ κ°μ΄ μ μ₯μμλ₯Ό μ μ§νμ§ μμΌλ―λ‘ μ μ₯μμλ₯Ό μ μ§νκ³ μ νλ€λ©΄ LinkedHashSetμ μ¬μ©ν΄μΌλ§ ν©λλ€. λ°λΌμ Listμ μ€λ³΅λ°μ΄ν°λ₯Ό μ κ±°νκΈ° μν΄μ LinkedHashSetμ μ¬μ©νλ€λ©΄ μμ½κ² μ€λ³΅ λ°μ΄ν°λ€μ μ κ±°ν μ μμ΅λλ€.
HashSetκ³Ό hashCode(), equals()
λ§μ½ nameκ³Ό ageλ₯Ό λ©€λ²λ³μλ‘ κ°λ Person ν΄λμ€κ° μλ€κ³ κ°μ ν΄λ΄ μλ€. μ΄λ¦κ³Ό λμ΄κ° κ°μΌλ©΄ κ°μ μ¬λμΌλ‘ μΈμνλ €λ μλλ‘ μμ±νμμ§λ§, μ μ HashSet 컬λ μ μ μ΄λ¦κ³Ό λμ΄κ° κ°μ λκ°μ μΈμ€ν΄μ€λ₯Ό λ£μ΄λ³΄λ κ°μ κ²μΌλ‘ μΈμνμ§ λͺ»νλ κ² κ°μ΅λλ€. κ·Έλ λ€λ©΄ μ΄ λ μΈμ€ν΄μ€κ° κ°μ κ²μΌλ‘ μΈμνκ² νλ €λ©΄ μ΄λ»κ² ν΄μΌν κΉμ? HashSetμ addλ©μλλ μλ‘μ΄ μμλ₯Ό μΆκ°νκΈ° μ μ κΈ°μ‘΄μ μ μ₯λ μμμ κ°μ κ²μΈμ§ νλ³νκΈ° μν΄ μΆκ°νλ €λ μμμ equals()μ hashCode()λ₯Ό νΈμΆνκΈ° λλ¬Έμ λ κ°μ§ λ©μλλ₯Ό λͺ©μ μ λ§κ² μ€λ²λΌμ΄λ© ν΄μΌλ§ ν©λλ€. λ°λΌμ μ΄λ¦κ³Ό λμ΄κ° κ°μΌλ©΄ equals()κ° trueλ₯Ό λ°ννλλ‘ μ€λ²λΌμ΄λ© ν΄μΌνλ©°, hashCode()λ₯Ό νΉμ λ°©μλλ‘ κ΅¬νν΄μΌλ§ ν©λλ€. μ΄μ λν μ½λλ μλμ κ°μ΅λλ€.
class Person {
String name;
int age;
/*
μλ΅...
*/
public boolean equals(Object obj) {
if(obj instanceof Person2) {
Person2 tmp = (Person2)obj;
return name.equals(tmp.name) && age==tmp.age;
}
return false;
}
public int hashCode() {
return Objects.hash(name,age);
}
}
TreeSet
TreeSetμ μ΄μ§ κ²μ νΈλ¦¬λΌλ μλ£κ΅¬μ‘°μ ννλ‘ λ°μ΄ν°λ₯Ό μ μ₯νλ 컬λ μ ν΄λμ€μ λλ€. μ΄μ§ κ²μ νΈλ¦¬λ μ λ ¬, κ²μ, λ²μκ²μμ λμ μ±λ₯μ 보μ΄λ μλ£κ΅¬μ‘°μ΄λ©° TreeSetμ 'λ λ-λΈλ νΈλ¦¬'λ‘ κ΅¬νλμ΄ μμ΅λλ€. κ·Έλ¦¬κ³ TreeSet λν Set μΈν°νμ΄μ€λ₯Ό ꡬννμΌλ―λ‘ μ€λ³΅λ λ°μ΄ν°μ μ μ₯μ νμ©νμ§ μμΌλ©° μ λ ¬λ μμΉμ μ μ₯νλ―λ‘ μ μ₯μμλ₯Ό μ μ§νμ§ μμ΅λλ€.
μ΄μ§ νΈλ¦¬λ λ§ν¬λ 리μ€νΈμ²λΌ μ¬λ¬ κ°μ λ Έλκ° μλ‘ μ°κ²°λ ꡬ쑰λ‘μ, κ° λ Έλμ μ΅λ 2κ°μ λ Έλλ₯Ό μ°κ²°ν μ μμΌλ©° '루νΈ'λΌκ³ λΆλ¦¬λ νλμ λ Έλμμ κ³μμ μΌλ‘ λ°μΌλ‘ νμ₯ν΄ λκ°λ ꡬ쑰μ λλ€. TreeSetμ μ΄μ§ κ²μ νΈλ¦¬μ νΉμ±μ μ μ§ν΄μΌ νκΈ° λλ¬Έμ λ°μ΄ν°λ₯Ό μ μ₯ν λ μΌμͺ½μλ λΆλͺ¨λ Έλμ κ°λ³΄λ€ μμ κ°μ, μ€λ₯Έμͺ½μλ λΆλͺ¨λ Έλμ κ°λ³΄λ€ ν° κ°μ μ μ₯ν©λλ€. λ°λΌμ λ°μ΄ν°λ₯Ό μ μ₯ν λ κ°λ€μ λΉκ΅ν΄μΌλ§ νλλ° μ΄μ λν΄ κ΅¬νν μ μλ λκ°μ§ λ°©λ²μ΄ μ‘΄μ¬ν©λλ€.
1. TreeSetμ μ μ₯λλ κ°μ²΄κ° Comparableμ ꡬννλ€.
2. Comparatorλ₯Ό μ 곡ν΄μ λ κ°μ²΄λ₯Ό λΉκ΅ν λ°©λ²μ μλ €μ€λ€.
μ΄ λ κ°μ§ λ°©λ² μ€ νλλΌλ μ¬μ©νμ§ μλλ€λ©΄ TreeSetμ κ°μ²΄λ₯Ό μ μ₯ν λ μμΈκ° λ°μνκ² λ©λλ€. TreeSetμ μ΄μ²λΌ μ λ ¬λ μνλ₯Ό λ μ μ§νκΈ° λλ¬Έμ λ¨μΌ κ° κ²μκ³Ό λ²μκ²μ, μλ₯Ό λ€λ©΄ 3κ³Ό 7μ¬μ΄μ λ²μμ μλ κ°μ κ²μνλ κ²μ΄ κ΅μ₯ν λΉ λ¦ λλ€. λμ λ°μ΄ν°λ₯Ό μμ°¨μ μΌλ‘ μ μ₯νλ κ²μ΄ μλλΌ μ μ₯μμΉλ₯Ό μ°Ύμμ μ μ₯ν΄μΌνλ©° μμ νλ κ²½μ° νΈλ¦¬ μΌλΆλ₯Ό μ¬κ΅¬μ±ν νμκ° μμΌλ―λ‘ λ§ν¬λ리μ€νΈλ³΄λ€ λ°μ΄ν°μ μΆκ°/μμ μκ°μ λ 걸리λ νΈμ λλ€.