λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

Java

[Java] μžλ°” μ»¬λ ‰μ…˜ Set

λ°˜μ‘ν˜•

μ…‹(Set)μ΄λž€?

Set은 μˆœμ„œμ— 상관없이, μ–΄λ–€ 데이터가 μ‘΄μž¬ν•˜λŠ”μ§€λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•œ μš©λ„λ‘œ 많이 μ‚¬μš©λœλ‹€. μ€‘λ³΅λ˜λŠ” 것을 λ°©μ§€ν•˜κ³ , μ›ν•˜λŠ” 값이 ν¬ν•¨λ˜μ–΄ μžˆλŠ”μ§€λ₯Ό ν™•μΈν•˜λŠ” 것이 μ£Ό μš©λ„μ΄λ‹€.

  • HashSet: μˆœμ„œκ°€ μ „ν˜€ ν•„μš” μ—†λŠ” 데이터λ₯Ό ν•΄μ‹œ ν…Œμ΄λΈ”μ— μ €μž₯ν•œλ‹€. Set 쀑에 κ°€μž₯ μ„±λŠ₯이 μ’‹λ‹€.
  • TreeSet: μ €μž₯된 λ°μ΄ν„°μ˜ 값에 λ”°λΌμ„œ μ •λ ¬λ˜λŠ” 셋이닀. red-black 트리둜 값이 μ €μž₯되며, HashSet보닀 μ•½κ°„ μ„±λŠ₯이 λŠλ¦¬λ‹€.
  • LinkedHashSet: μ—°κ²°λœ λͺ©λ‘ νƒ€μž…μœΌλ‘œ κ΅¬ν˜„λœ ν•΄μ‹œ ν…Œμ΄λΈ”μ— 데이터λ₯Ό μ €μž₯ν•œλ‹€. μ €μž₯된 μˆœμ„œμ— λ”°λΌμ„œ 값이 μ •λ ¬λœλ‹€. λŒ€μ‹  μ„±λŠ₯이 μ…‹ μ€‘μ—μ„œ κ°€λ‚­ λŠλ¦¬λ‹€.

HashSet

HashSet μ£Όμš” λ©”μ†Œλ“œ

리턴 νƒ€μž… λ©”μ†Œλ“œ 이름 및 맀개 λ³€μˆ˜ μ„€λͺ…
boolean add(E e) 데이터λ₯Ό μΆ”κ°€ν•œλ‹€.
void clear() λͺ¨λ“  데이터λ₯Ό μ‚­μ œν•œλ‹€.
boolean contains(Object o) μ§€μ •ν•œ 객체가 μ‘΄μž¬ν•˜λŠ”μ§€λ₯Ό ν™•μΈν•œλ‹€.
boolean isEmpty() 데이터가 μžˆλŠ”μ§€λ₯Ό ν™•μΈν•œλ‹€.
boolean remove(Object o) 맀개 λ³€μˆ˜λ‘œ λ„˜μ–΄μ˜¨ 객체λ₯Ό μ‚­μ œν•œλ‹€.
int size() λ°μ΄ν„°μ˜ 개수λ₯Ό λ¦¬ν„΄ν•œλ‹€.

HashSet μ‚¬μš©λ°©λ²•

String[] cars = new Strint[]{
    "Tico", "Sonata", "BMW", "Mustang",
    "BMW", "Mustang", "Tico", "Grandeure"
}
Set<String> carSet = new HashSet<String>();
for(String car: cars){
    carSet.add(car);
}
System.out.println(carSet.size());

carSetμ—λŠ” 쀑볡지 μ•ŠλŠ” μœ μΌν•œ μžλ™μ°¨ μ’…λ₯˜μ˜ κ°’λ§Œ λ‚¨κ²Œλ˜μ–΄μ„œ μžλ™μ°¨ μ’…λ₯˜μ˜ 개수λ₯Ό μ‰½κ²Œ νŒŒμ•…ν•  수 μžˆλ‹€.

이처럼 HashSetκ³Ό 같은 Set을 μ‚¬μš©ν•˜λ©΄ μ—¬λŸ¬ μ€‘λ³΅λ˜λŠ” 값듀을 κ±ΈλŸ¬λ‚΄λŠ”λ° 맀우 μœ μš©ν•˜λ‹€.

참고자료

μžλ°”μ˜ η₯ž1 2nd Edition / 이상민 μ§€μŒ

λ°˜μ‘ν˜•

'Java' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Java] 슀트림(Stream)  (0) 2022.02.16
[Java] μžλ°” μ»¬λ ‰μ…˜ Map  (0) 2022.01.11
[Java] String 클래슀 정리  (0) 2022.01.08
[Java] μƒμ†μ΄λž€?  (0) 2022.01.06
[Java] λ³€μˆ˜μ™€ μžλ£Œν˜•  (0) 2022.01.04