Home /Data structure/ ๐Ÿ’ฌ HashSet, HashMap, TreeSet, TreeMap
Post
Cancel

/Data structure/ ๐Ÿ’ฌ HashSet, HashMap, TreeSet, TreeMap



Set, Map / Hash, Tree



ย setMap
์ž๋ฃŒํ˜•ํƒœValue ๋งŒ ์กด์žฌKey, Value ์Œ์œผ๋กœ ์กด์žฌ
์ค‘๋ณต์—ฌ๋ถ€์ค‘๋ณต ๋ถˆ๊ฐ€Key๊ฐ’ ์ค‘๋ณต ๋ถˆ๊ฐ€
containscontains(value)containsKey(key)
get๋ถˆ๊ฐ€get(key)


  • Set
    • contains ๋ฉ”์†Œ๋“œ๋กœ ๊ฐ’์˜ ์กด์žฌ ์—ฌ๋ถ€๋งŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด ํŠน์ • ์š”์†Œ๋ฅผ getํ•˜๋ ค๋ฉด iterator๋ฅผ ํ†ตํ•ด ์–ป์–ด์•ผ ํ•จ
  • Map
    • key๊ฐ’์„ ํ†ตํ•ด ํ•ด๋‹นํ•˜๋Š” value๋ฅผ ๋ฐ”๋กœ ์–ป์„ ์ˆ˜ ์žˆ์Œ


ย HashTree
์ˆœ์„œ์ˆœ์„œ ์—†์Œ์ •๋ ฌ ์ˆœ์„œ ์œ ์ง€
์‹œ๊ฐ„ ๋ณต์žก๋„O(1)O(log n)


  • Hash์™€ Tree๋Š” ์ „ํ˜€ ๋‹ค๋ฅธ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ๋„๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋‹ค๋ฅด๋‹ค.

  • Hash : ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๋Œ€์‹  ๋น ๋ฅธ ์‹œ๊ฐ„์„ ๋ณด์žฅ
  • Tree : ํŠธ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•ด ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„ ์‹œ๊ฐ„์ด ๋Š๋ฆผ


HashSet : ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ , Value๋งŒ ์กด์žฌ, ์กด์žฌ ์—ฌ๋ถ€๋งŒ ํŒ๋ณ„ ๊ฐ€๋Šฅ
HashMap : ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ , KeyยทValue ์กด์žฌ, get ๊ฐ€๋Šฅ
TreeSet : ์ •๋ ฌ ์ˆœ์„œ ์œ ์ง€, Value๋งŒ ์กด์žฌ, ์กด์žฌ ์—ฌ๋ถ€๋งŒ ํŒ๋ณ„ ๊ฐ€๋Šฅ
TreeMap : ์ •๋ ฌ ์ˆœ์„œ ์œ ์ง€, KeyยทValue ์กด์žฌ, get ๊ฐ€๋Šฅ



แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2023-02-14 แ„‹แ…ฉแ„’แ…ฎ 1 55 32



TreeSet, TreeMap



์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ๊ฐ•ํ™”์‹œํ‚จ TreeSet๊ณผ TreeMap์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.
TreeSet์€ Set์ปฌ๋ ‰์…˜์ด๊ณ , TreeMap์€ Map์ปฌ๋ ‰์…˜์ด๋‹ค.
์ด ์ปฌ๋ ‰์…˜๋“ค์€ ์ด์ง„ ํŠธ๋ฆฌ(binary tree)๋ฅผ ์ด์šฉํ•ด์„œ ๊ณ„์ธต์  ๊ตฌ์กฐ(Tree ๊ตฌ์กฐ)๋ฅผ ๊ฐ€์ง€๋ฉด์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.


โœ”๏ธ ์ด์ง„ ํŠธ๋ฆฌ ๊ตฌ์กฐ

  • ์ด์ง„ ํŠธ๋ฆฌ(binary tree)๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…ธ๋“œ(node)๊ฐ€ ํŠธ๋ฆฌ ํ˜•ํƒœ๋กœ ์—ฐ๊ฒฐ๋œ ๊ตฌ์กฐ๋กœ,
    ๋ฃจํŠธ ๋…ธํŠธ(root node)๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ๋…ธ๋“œ์—์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ
    ๊ฐ ๋…ธ๋“œ์— ์ตœ๋Œ€ 2๊ฐœ์˜ ๋…ธ๋“œ๋ฅผ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  • ์œ„์•„๋ž˜๋กœ ์—ฐ๊ฒฐ๋œ ๋‘ ๋…ธ๋“œ๋ฅผ ๋ถ€๋ชจ-์ž์‹๊ด€๊ณ„์— ์žˆ๋‹ค๊ณ  ํ•˜๋ฉฐ ์œ„์˜ ๋…ธ๋“œ๋ฅผ ๋ถ€๋ชจ ๋…ธ๋“œ, ์•„๋ž˜์˜ ๋…ธ๋“œ๋ฅผ ์ž์‹ ๋…ธ๋“œ๋ผ ํ•œ๋‹ค.
  • ํ•˜๋‚˜์˜ ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” ์ตœ๋Œ€ 2 ๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ์™€ ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ์ด์ง„ ํŠธ๋ฆฌ๋Š” ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค ์ž‘์€ ๋…ธ๋“œ๋Š” ์™ผ์ชฝ์— ์œ„์น˜์‹œํ‚ค๊ณ , ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ๊ฐ’๋ณด๋‹ค ํฐ ๋…ธ๋“œ๋Š” ์˜ค๋ฅธ์ชฝ์— ์œ„์น˜์‹œํ‚จ๋‹ค.
    (์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ฌธ์ž๋ฅผ ์ €์žฅํ•  ๊ฒฝ์šฐ์—๋Š” ๋ฌธ์ž์˜ ์œ ๋‹ˆ์ฝ”๋“œ ๊ฐ’์œผ๋กœ ๋น„๊ตํ•œ๋‹ค.)
  • Tree traversal(ํŠธ๋ฆฌ ์ˆœํšŒ)
    v: ๋…ธ๋“œ ๋ฐฉ๋ฌธ ,L: ์™ผ์ชฝ ๋ถ€๋ถ„ํŠธ๋ฆฌ ์šดํ–‰, R: ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„ํŠธ๋ฆฌ ์šดํ–‰
    • Pre-Order(์ „ ์ˆœํšŒ) : vLR
    • In-Order(์ค‘ ์ˆœํšŒ) : LvR
    • Post-Order(ํ›„ ์ˆœํšŒ) LRv




TreeSet



TreeSet์€ ์ด์ง„ ํŠธ๋ฆฌ(binary tree)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ Set ์ปฌ๋ ‰์…˜์ด๋‹ค.
ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋Š” ๋…ธ๋“œ๊ฐ’์ธ value์™€ ์™ผ์ชฝ๊ณผ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ๋ฅผ ์ฐธ์กฐํ•˜๊ธฐ ์œ„ํ•œ ๋‘ ๊ฐœ์˜ ๋ณ€์ˆ˜๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
TreeSet์— ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ •๋ ฌ๋˜๋Š”๋ฐ
๋ถ€๋ชจ๊ฐ’๊ณผ ๋น„๊ตํ•ด์„œ ๋‚ฎ์€ ๊ฒƒ์€ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ์—, ๋†’์€ ๊ฒƒ์€ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ์— ์ €์žฅ๋œ๋‹ค.


1
2
TreeSet<E> treeSet = new TreeSet<E>();
TreeSet<String> treeSet = new TreeSet<>();



TreeSet์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฉ”์†Œ๋“œ



๋ฆฌํ„ด ํƒ€์ž…๋ฉ”์†Œ๋“œ์„ค๋ช…
Efirst()์ œ์ผ ๋‚ฎ์€ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด
Elast()์ œ์ผ ๋†’์€ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด
Elower(E e)์ฃผ์–ด์ง„ ๊ฐ์ฒด๋ณด๋‹ค ๋ฐ”๋กœ ์•„๋ž˜ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด
Ehigher(E e)์ฃผ์–ด์ง„ ๊ฐ์ฒด๋ณด๋‹ค ๋ฐ”๋กœ ์œ„ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด
Efloor(E e)์ฃผ์–ด์ง„ ๊ฐ์ฒด์™€ ๋™๋“ฑํ•œ ๊ฐ์ฒด๊ฐ€ ์žˆ์œผ๋ฉด ๋ฆฌํ„ด,
๋งŒ์•ฝ ์—†๋‹ค๋ฉด ์ฃผ์–ด์ง„ ๊ฐ์ฒด์˜ ๋ฐ”๋กœ ์•„๋ž˜์˜ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด
Eceiling(E e)์ฃผ์–ด์ง„ ๊ฐ์ฒด์™€ ๋™๋“ฑํ•œ ๊ฐ์ฒด๊ฐ€ ์žˆ์œผ๋ฉด ๋ฆฌํ„ด, ๋งŒ์•ฝ ์—†๋‹ค๋ฉด ์ฃผ์–ด์ง„ ๊ฐ์ฒด์˜ ๋ฐ”๋กœ ์œ„์˜ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด
EpollFirst()์ œ์ผ ๋‚ฎ์€ ๊ฐ์ฒด๋ฅผ ๊บผ๋‚ด์˜ค๊ณ  ์ปฌ๋ ‰์…˜์—์„œ ์ œ๊ฑฐํ•จ
EpollLast()์ œ์ผ ๋†’์€ ๊ฐ์ฒด๋ฅผ ๊บผ๋‚ด์˜ค๊ณ  ์ปฌ๋ ‰์…˜์—์„œ ์ œ๊ฑฐํ•จ
ย ย ย 



TreeSet์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ ฌ ๋ฉ”์†Œ๋“œ



๋ฆฌํ„ด ํƒ€์ž…๋ฉ”์†Œ๋“œ์„ค๋ช…
IteratordescendingIterator()๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ Iterator๋ฅผ ๋ฆฌํ„ด
NavigableSetdescendingSet()๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ NavigableSet์„ ๋ฐ˜ํ™˜


1
2
NavigableSet<E> descendingSet = treeSet.descendingSet();
NavigableSet<E> ascendingSet = descendingSet.descendingSet(); // ๋‘๋ฒˆ ํ˜ธ์ถœ



TreeSet์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฒ”์œ„ ๊ฒ€์ƒ‰๊ณผ ๊ด€๋ จ๋œ ๋ฉ”์†Œ๋“œ



๋ฆฌํ„ด ํƒ€์ž…๋ฉ”์†Œ๋“œ์„ค๋ช…
NavigableSetheadSet(E toElement, boolean inclusive)์ฃผ์–ด์ง„ ๊ฐ์ฒด๋ณด๋‹ค ๋‚ฎ์€ ๊ฐ์ฒด๋“ค์„ NavigableSet์œผ๋กœ ๋ฆฌํ„ด.
์ฃผ์–ด์ง„ ๊ฐ์ฒด ํฌํ•จ ์—ฌ๋ถ€๋Š” ๋‘๋ฒˆ์งธ ๋งค๊ฐœ๊ฐ’์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง.
NavigableSettailSet(E fromElement, boolean inclusive)์ฃผ์–ด์ง„ ๊ฐ์ฒด๋ณด๋‹ค ๋†’์€ ๊ฐ์ฒด๋“ค์„ NavigableSet์œผ๋กœ ๋ฆฌํ„ด.
์ฃผ์–ด์ง„ ๊ฐ์ฒด ํฌํ•จ ์—ฌ๋ถ€๋Š” ๋‘๋ฒˆ์งธ ๋งค๊ฐœ๊ฐ’์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.
NavigableSetsubSet
(E fromElement, boolean fromInclusive,
E toElement, boolean toInclusive)
์‹œ์ž‘๊ณผ ๋์œผ๋กœ ์ฃผ์–ด์ง„ ๊ฐ์ฒด ์‚ฌ์ด์˜ ๊ฐ์ฒด๋“ค์„ NavigableSet์œผ๋กœ ๋ฆฌํ„ด.
์‹œ์ž‘๊ณผ ๋ ๊ฐ์ฒด ํฌํ•จ์—ฌ๋ถ€๋Š” ๋‘๋ฒˆ์งธ, ๋„ค ๋ฒˆ์งธ ๋งค๊ฐœ๊ฐ’์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.



TreeMap



TreeMap๋„ TreeSet์ฒ˜๋Ÿผ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ Map ์ปฌ๋ ‰์…˜์ด๋‹ค.
TreeSet๊ณผ์˜ ์ฐจ์ด์ ์€ ํ‚ค์™€ ๊ฐ’์ด ์ €์žฅ๋œ Map.Entry๋ฅผ ์ €์žฅํ•œ๋‹ค๋Š” ์ ์ด๋‹ค.
TreeMap์— ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ •๋ ฌ๋˜๋Š”๋ฐ,
๊ธฐ๋ณธ์ ์œผ๋กœ ๋ถ€๋ชจ ํ‚ค๊ฐ’๊ณผ ๋น„๊ตํ•˜์—ฌ
ํ‚ค ๊ฐ’์ด ๋‚ฎ์€ ๊ฒƒ์€ ์™ผ์ชฝ ์ž์‹ ๋…ธ๋“œ์—, ํ‚ค ๊ฐ’์ด ๋†’์€ ๊ฒƒ์€ ์˜ค๋ฅธ์ชฝ ์ž์‹ ๋…ธ๋“œ์— Map.Entry ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•œ๋‹ค.


1
2
TreeMap<K,V> treeMap = new TreeMap<K,V>();
TreeMap<String, Integer> treeMap = new TreeMap<>();



TreeMap์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒ€์ƒ‰ ๊ด€๋ จ ๋ฉ”์†Œ๋“œ



๋ฆฌํ„ด ํƒ€์ž…๋ฉ”์†Œ๋“œ์„ค๋ช…
Map.Entry<K,V>firstEntry()์ œ์ผ ๋‚ฎ์€ Map.Entry๋ฅผ ๋ฆฌํ„ด
Map.Entry<K,V>lastEntry()์ œ์ผ ๋†’์€ Map.Entry๋ฅผ ๋ฆฌํ„ด
Map.Entry<K,V>lowerEntry(K key์ฃผ์–ด์ง„ ํ‚ค๋ณด๋‹ค ๋ฐ”๋กœ ์•„๋ž˜ Map.Entry๋ฅผ ๋ฆฌํ„ด
Map.Entry<K,V>higherEntry(K key)์ฃผ์–ด์ง„ ํ‚ค๋ณด๋‹ค ๋ฐ”๋กœ ์œ„ Map.Entry๋ฅผ ๋ฆฌํ„ด
Map.Entry<K,V>floorEntry(K key)์ฃผ์–ด์ง„ ํ‚ค์™€ ๋™๋“ฑํ•œ ํ‚ค๊ฐ€ ์žˆ์œผ๋ฉด ํ•ด๋‹น Map.Entry๋ฅผ ๋ฆฌํ„ด,
๋งŒ์•ฝ ์—†๋‹ค๋ฉด ์ฃผ์–ด์ง„ ํ‚ค์˜ ๋ฐ”๋กœ ์•„๋ž˜์˜ ํ‚ค์˜ Map.Entry๋ฅผ ๋ฆฌํ„ด
Map.Entry<K,V>ceilingEntry(K key)์ฃผ์–ด์ง„ ํ‚ค์™€ ๋™๋“ฑํ•œ ํ‚ค๊ฐ€ ์žˆ์œผ๋ฉด Map.Entry๋ฅผ ๋ฆฌํ„ด,
๋งŒ์•ฝ ์—†๋‹ค๋ฉด ์ฃผ์–ด์ง„ ํ‚ค์˜ ๋ฐ”๋กœ ์œ„์˜ ํ‚ค์˜ Map.Entry๋ฅผ ๋ฆฌํ„ด
Map.Entry<K,V>pollFirstEntry()์ œ์ผ ๋‚ฎ์€ Map.Entry๋ฅผ ๊บผ๋‚ด์˜ค๊ณ  ์ปฌ๋ ‰์…˜์—์„œ ์ œ๊ฑฐํ•จ
Map.Entry<K,V>pollLastEntry()์ œ์ผ ๋†’์€ Map.Entry๋ฅผ ๊บผ๋‚ด์˜ค๊ณ  ์ปฌ๋ ‰์…˜์—์„œ ์ œ๊ฑฐํ•จ



TreeMap์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ ฌ ๊ด€๋ จ ๋ฉ”์†Œ๋“œ



๋ฆฌํ„ด ํƒ€์ž…๋ฉ”์†Œ๋“œ์„ค๋ช…
NavigableSetdescendingKeySet()๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ํ‚ค์˜ NavigableSet์„ ๋ฆฌํ„ด
NavigableMap<K,V>descendingMap()๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ Map.Entry์˜ NavigableMap์„ ๋ฐ˜ํ™˜


1
2
NavigableMap<K,V> descendingMap = treeMap.descendingMap(); //๋‚ด๋ฆผ์ฐจ์ˆœ
NavigableMap<K,V> ascendingMap = descendingMap.descendingMap(); //์˜ค๋ฆ„์ฐจ์ˆœ


๋ฆฌํ„ด ํƒ€์ž…๋ฉ”์†Œ๋“œ์„ค๋ช…
NavigableMap<K,V>headMap(K toKey, boolean inclusive)์ฃผ์–ด์ง„ ํ‚ค๋ณด๋‹ค ๋‚ฎ์€ ํ‚ค์˜ Map.Entry๋“ค์„ NavigableMap์œผ๋กœ ๋ฆฌํ„ด.
์ฃผ์–ด์ง„ ํ‚ค์˜ Map.Entry์˜ ํฌํ•จ ์—ฌ๋ถ€๋Š” ๋‘๋ฒˆ์งธ ๋งค๊ฐœ๊ฐ’์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง.
NavigableMap<K,V>tailMap(K fromKey, boolean inclusive)์ฃผ์–ด์ง„ ํ‚ค๋ณด๋‹ค ๋†’์€ ํ‚ค๋“ค์˜ NavigableMap์œผ๋กœ ๋ฆฌํ„ด.
์ฃผ์–ด์ง„ ํ‚ค์˜ Map.Entry์˜ ํฌํ•จ ์—ฌ๋ถ€๋Š” ๋‘๋ฒˆ์งธ ๋งค๊ฐœ๊ฐ’์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.
NavigableMap<K,V>subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive)์‹œ์ž‘๊ณผ ๋์œผ๋กœ ์ฃผ์–ด์ง„ ํ‚ค ์‚ฌ์ด์˜ ํ‚ค๋“ค์˜ Map.Entry์„ NavigableMap์œผ๋กœ ๋ฆฌํ„ด.
์‹œ์ž‘๊ณผ ๋ ํ‚ค์˜ Map.Entry ํฌํ•จ์—ฌ๋ถ€๋Š” ๋‘๋ฒˆ์งธ, ๋„ค ๋ฒˆ์งธ ๋งค๊ฐœ๊ฐ’์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.



Comparable ๊ณผ Comparator


TreeSet ๊ฐ์ฒด์™€ TreeMap์˜ ํ‚ค๋Š” ์ €์žฅ๊ณผ ๋™์‹œ์— ์ž๋™ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜๋Š”๋ฐ,
์ˆซ์ž(Integer,Double)ํƒ€์ž…์ผ ๊ฒฝ์šฐ์—๋Š” ๊ฐ’์œผ๋กœ ์ •๋ ฌํ•˜๊ณ , ๋ฌธ์ž์—ด(String)์ผ ๊ฒฝ์šฐ์—๋Š” ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ์ •๋ ฌํ•œ๋‹ค.


TreeSet๊ณผ TreeMap์€ ์ •๋ ฌ์„ ์œ„ํ•ด java.lang.Comparable์„ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด๋ฅผ ์š”๊ตฌํ•˜๋Š”๋ฐ,
Integer, Double, String์€ ๋ชจ๋‘ Comparable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋‹ค.
์‚ฌ์šฉ์ž ์ •์˜ ํด๋ž˜์Šค๋„ Comparable์„ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉด ์ž๋™ ์ •๋ ฌ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
Comparable์—๋Š” compareTo()๋ฉ”์†Œ๋“œ๊ฐ€ ์ •์˜๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—
์‚ฌ์šฉ์ž ์ •์˜ ํด๋ž˜์Šค์—์„œ๋Š” ์ด ๋ฉ”์†Œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(์žฌ์ •์˜)ํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฆฌํ„ด ๊ฐ’์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.


๋ฆฌํ„ด ํƒ€์ž…๋ฉ”์†Œ๋“œ์„ค๋ช…
intcompareTo(To)์ฃผ์–ด์ง„ ๊ฐ์ฒด์™€ ๊ฐ™์œผ๋ฉด 0์„ ๋ฆฌํ„ด
์ฃผ์–ด์ง„ ๊ฐ์ฒด๋ณด๋‹ค ์ ์œผ๋ฉด ์Œ์ˆ˜๋ฅผ ๋ฆฌํ„ด
์ฃผ์–ด์ง„ ๊ฐ์ฒด๋ณด๋‹ค ํฌ๋ฉด ์–‘์ˆ˜๋ฅผ ๋ฆฌํ„ด
์˜ค๋ฆ„์ฐจ์ˆœ, ๋‚ด๋ฆผ์ฐจ์ˆœ ๋‹ค ๊ฐ€๋Šฅ



TreeSet์˜ ๊ฐ์ฒด์™€ TreeMap์˜ ํ‚ค๊ฐ€ Comparable์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋Š”
์ €์žฅํ•˜๋Š” ์ˆœ๊ฐ„ ClassCastException์ด ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ์ฃผ์˜ํ•˜์ž.


(์ฐธ๊ณ )



๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์—ฌ๋Ÿฌ๊ธ€๊ณผ ์ฑ… ์ฝ์€ ๋‚ด์šฉ์„ ๋ฐ”ํƒ•์œผ๋กœ ์ •๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
์ข‹์€ ๊ธ€๋กœ ์ €์˜ ๊ณต๋ถ€์— ๋„์›€์„ ์ฃผ์‹œ๋Š” ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

This post is licensed under CC BY 4.0 by the author.

/Data structure/ Tree

โœจTIL - ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ ์†๋„ ๋‚ด๋Š” ์ค‘