๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Study/Java

[TIL] Map<K, V>

by hong- 2022. 5. 18.

๐Ÿ‘‹๐Ÿป Map

- ํ‚ค(Key)์™€ ๊ฐ’(Value)์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ

- ์–ด๋–ค ๋‘ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ฒฐ(๋งคํ•‘)

- ํ‚ค๋Š” ์ค‘๋ณต x = ๊ณ ์œ  ํ•˜๋ฉฐ  ๊ฐ’์€ ์ค‘๋ณต ์ €์žฅ ๊ฐ€๋Šฅ

- HashMap, Hashtable, TreeMap, SortedMap ๋“ฑ

-List๋Š” ์ธ๋ฑ์Šค ๊ธฐ์ค€, Map์€ ํ‚ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐ์ฒด ๊ด€๋ฆฌ

  (1) ๊ฐ์ฒด ์ถ”๊ฐ€ Put

   - ์ฃผ์–ด์ง„ ํ‚ค๋กœ ๊ฐ’์„ ์ €์žฅ

   - put(object key, object value)

  (2) ๊ฐ์ฒด ๊ฒ€์ƒ‰ containsKey / containsValue

   - ์ฃผ์–ด์ง„ ํ‚ค๊ฐ€ ์žˆ์œผ๋ฉด true, ์—†์œผ๋ฉด false ๋ฆฌํ„ด : containsKey(object key)

   - ์ฃผ์–ด์ง„ ๊ฐ’์ด ์žˆ์œผ๋ฉด true, ์—†์œผ๋ฉด false ๋ฆฌํ„ด : containsValue(object value)

  (3) ๊ฐ์ฒด๋ฅผ Set์œผ๋กœ ๋ฐ˜ํ™˜ entry Set / ํ‚ค๋ฅผ Set์œผ๋กœ ๋ฐ˜ํ™˜ keySet

   - ํ‚ค์™€ ๊ฐ’์˜ ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ชจ๋“  Map.Entry ๊ฐ์ฒด๋ฅผ Set์— ๋‹ด์•„ ๋ฆฌํ„ด : entry Set()

   - ๋ชจ๋“  ํ‚ค๋ฅผ Set ๊ฐ์ฒด์— ๋‹ด์•„์„œ ๋ฆฌํ„ด : keySet()

  (4) ํ‚ค์— ๋Œ€ํ•œ ๊ฐ’ ํ™•์ธ get

   - ์ฃผ์–ด์ง„ ํ‚ค์— ๋Œ€ํ•œ ๊ฐ’์„ ๋ฆฌํ„ด

   - get(Object key)

  (5) ์ปฌ๋ ‰์…˜ ๊ฐ์ฒด ์œ ๋ฌด ํ™•์ธ isEmpty

   - ์ปฌ๋ ‰์…˜์ด ๋น„์–ด์žˆ๋Š”์ง€ ํ™•์ธ

   - isEmpty()

  (6) ํ‚ค-๊ฐ’ ์ด ๊ฐฏ์ˆ˜ size

   - size()

  (7) ๊ฐ’์„ ์ปฌ๋ ‰์…˜ ๋ฆฌํ„ด values

   - ์ €์žฅ๋œ ๋ชจ๋“  ๊ฐ’์„ ์ปฌ๋ ‰์…˜์— ๋‹ด์•„ ๋ฆฌํ„ด

   - values()

  (8) ๊ฐ์ฒด ์‚ญ์ œ clear

   - ๋ชจ๋“  ํ‚ค์™€ ๊ฐ’ ์‚ญ์ œ

   - clear()

  (9) ๊ฐ์ฒด ์‚ญ์ œ ํ›„ ๊ฐ’ ๋ฆฌํ„ด remove

   - ์ฃผ์–ด์ง„ ํ‚ค์™€ ์ผ์น˜ํ•˜๋Š” ์—”ํŠธ๋ฆฌ ๊ฐ์ฒด ์‚ญ์ œํ•˜๊ณ  ๊ฐ’์„ ๋ฆฌํ„ด

   - remove(Object key)


๐Ÿ™๐Ÿป HashMap

 - ๋ฐฐ์—ด๊ณผ ์—ฐ๊ฒฐ์ด ๊ฒฐํ•ฉ๋œ ํ˜•ํƒœ

 - ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํ‚ค์™€ ๊ฐ’์ด ์ €์žฅ๋˜๋Š” ์œ„์น˜ ๊ฒฐ์ •

 - hashcode()์˜ ๋ฆฌํ„ด๊ฐ’์ด ๊ฐ™์Œ + equals()๊ฐ€ true ๋ฆฌํ„ด

 - hashing ๊ธฐ๋ฒ• ์‚ฌ์šฉ์œผ๋กœ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐ ๊ฒ€์ƒ‰์— ์ข‹์€ ์„ฑ๋Šฅ

 - ํ‚ค์™€ ๊ฐ’์˜ ํƒ€์ž…์€ ํด๋ž˜์Šค ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…๋งŒ ๊ฐ€๋Šฅ

Map<Key, Value> map = new HashMap<Key, Value>();

  (1) ๊ฐ์ฒด ์ €์žฅ

map.put(ํ‚ค, ๊ฐ’);
bread.put("ํ”ผ์ž๋นต", 4000);
bread.put("์ดˆ์ฝ”๋นต",3000);
bread.put("์•™๋ฒ„ํ„ฐ",5000);
bread.put("๊นœ๋น ๋‰ด",6000);
bread.put("์น˜์•„๋ฐ”ํƒ€",2000);

  (2) ๊ฐ์ฒด ๊ฐ’ ๋ฐ˜ํ™˜

map.get(ํ‚ค);

  (3) ๊ฐ์ฒด ์‚ญ์ œ

map.clear();

  (4) Set ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜

//keySet ๋ณ€ํ™˜
Set<String> keySet = bread.keySet();

//entrySet ๋ณ€ํ™˜
Set<Map.Entry<String, Integer>> entrySet = bread.entrySet();

๐Ÿ“ HashMap ๋‚ด์šฉ ๊บผ๋‚ด๋Š” ๋ฐฉ๋ฒ•

  (1) entrySet()

  - map์— ์ €์žฅ๋˜์–ด์žˆ๋Š” Entry ๊ฐ์ฒด ๋ฐ˜ํ™˜

  - Entry ๊ฐ์ฒด๋Š” ํ‚ค์™€ ๊ฐ’์˜ ์Œ์„ ์ €์žฅํ•˜๋Š” ๊ฐ์ฒด๋กœ getKey()์™€ getValue()๋กœ ํ‚ค์™€ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ

for ( Map.Entry<String, Integer> entry : map.entrySet() ) {
	System.out.println( entry.getKey() + entry.getValue() );
}

  (2) keySet()

  - Map์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ํ‚ค ๋ฐ˜ํ™˜

  - get()๋กœ ํ‚ค์— ๋Œ€์‘๋˜๋Š” ๊ฐ’์„ ๊ฐ€์ ธ์˜ด

for (String key : map.keySet()) {
	String value = map.get(key);
    System.out.println( key + value );
 }

  (3) iterator()

//keySet ํ˜ธ์ถœ
Iterator<String> KeyIterator = keySet.iterator();
while(KeyIterator.hasNext()){
	String key = KeyIterator.next();
}

//entrySet ํ˜ธ์ถœ
Iterator<Map.Entry<String,Integer>> entryIterator = entrySet.iterator();

๐Ÿ’ก keySet์™€ entrySet์™€ iterator

  - keySet()์€ key ๊ฐ’๋งŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ

  - entrySet()์€ key์™€ value ๊ฐ’ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ

  - iterator()๋Š” ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ํ•˜๋‚˜์”ฉ ์ ‘๊ทผ


 

'Study > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[TIL] ๋‚ด๋ถ€ ํด๋ž˜์Šค  (0) 2022.05.18
[TIL] ์ž๋ฃŒ๊ตฌ์กฐ  (0) 2022.05.18
[TIL] Set<E>  (2) 2022.05.17
[TIL] List<E>  (0) 2022.05.17
[TIL] ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ  (0) 2022.05.17