๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๊ฐœ๋ฐœ์–ธ์–ด/JAVA

[Java] HashMap ์‚ฌ์šฉ๋ฒ•

by yunamom 2022. 4. 10.
๋ฐ˜์‘ํ˜•

โœจHashMap ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?


  1. HashMap์€ Map ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๋Œ€ํ‘œ์ ์ธ Map ์ปฌ๋ ‰์…˜์ž…๋‹ˆ๋‹ค.
  2. Map ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•˜๊ณ  ์žˆ๊ธฐ์— Map์˜ ์„ฑ์งˆ์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  3. Map์€ ํ‚ค๐Ÿ”‘์™€ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋œ Entry๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.
  4. ์—ฌ๊ธฐ์„œ ํ‚ค์™€ ๊ฐ’์€ ๋ชจ๋‘ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ๊ฐ’์€ ์ค‘๋ณต ์ €์žฅ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ํ‚ค๋Š” ์ค‘๋ณต ์ €์žฅ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  5. ๋งŒ์•ฝ ๊ธฐ์กด์— ์ €์žฅ๋œ ํ‚ค์™€ ๋™์ผํ•œ ํ‚ค๋กœ ๊ฐ’์„ ์ €์žฅํ•˜๋ฉด ๊ธฐ์กด์˜ ๊ฐ’์€ ์—†์–ด์ง€๊ณ  ์ƒˆ๋กœ์šด ๊ฐ’์œผ๋กœ ๋Œ€์น˜๋ฉ๋‹ˆ๋‹ค.
  6. HashMap์€ ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ํ•ด์‹ฑ(Hashing)์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ์„ ๋ณด์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : ๋งํฌ

์œ„ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด HashMap์€ ๋‚ด๋ถ€์— 'ํ‚ค'์™€ '๊ฐ’'์„ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

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

 

์‚ฌ์šฉ์ž๋Š” ๊ทธ ์œ„์น˜๋ฅผ ์•Œ ์ˆ˜ ์—†๊ณ , ์‚ฝ์ž…๋˜๋Š” ์ˆœ์„œ์™€ ๋“ค์–ด ์žˆ๋Š” ์œ„์น˜ ๋˜ํ•œ ๊ด€๊ณ„๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.


โœจHashMap ์‚ฌ์šฉ๋ฒ•

 

HashMap ์„ ์–ธ

/* HashMap์ƒ์„ฑ */
HashMap<String,String> map1 = new HashMap<String,String>();

/* new์—์„œ ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ ์ƒ๋žต๊ฐ€๋Šฅ */
HashMap<String,String> map2 = new HashMap<>();

/* map1์˜ ๋ชจ๋“  ๊ฐ’์„ ๊ฐ€์ง„ HashMap์ƒ์„ฑ */
HashMap<String,String> map3 = new HashMap<>(map1);

/* ์ดˆ๊ธฐ ์šฉ๋Ÿ‰(capacity)์ง€์ • */
HashMap<String,String> map4 = new HashMap<>(10);

/* ์ดˆ๊ธฐ capacity,load factor์ง€์ • */
HashMap<String,String> map5 = new HashMap<>(10, 0.7f);

/* ์ดˆ๊ธฐ๊ฐ’ ์ง€์ • */
HashMap<String,String> map6 = new HashMap<String,String>(){{
    put("a","b");
}};

 

HashMap ๊ฐ’ ์ถ”๊ฐ€

/* new์—์„œ ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ ์ƒ๋žต๊ฐ€๋Šฅ */
HashMap<Integer,String> map = new HashMap<>();

/* ๊ฐ’ ์ถ”๊ฐ€ */
map.put(1,"์‚ฌ๊ณผ"); 
map.put(2,"๋ฐ”๋‚˜๋‚˜");
map.put(3,"ํฌ๋„");

 

HashMap ๊ฐ’ ์‚ญ์ œ

/* ์ดˆ๊ธฐ๊ฐ’ ์ง€์ • */
HashMap<Integer,String> map = new HashMap<Integer,String>(){{
    put(1,"์‚ฌ๊ณผ");
    put(2,"๋ฐ”๋‚˜๋‚˜");
    put(3,"ํฌ๋„");
}};

/* key๊ฐ’ 1 ์ œ๊ฑฐ */
map.remove(1); 

/* ๋ชจ๋“  ๊ฐ’ ์ œ๊ฑฐ */
map.clear();

 

HashMap ๊ฐ’ ์ถœ๋ ฅ

/* ์ดˆ๊ธฐ๊ฐ’ ์ง€์ • */
HashMap<Integer,String> map = new HashMap<Integer,String>(){{
    put(1,"์‚ฌ๊ณผ");
    put(2,"๋ฐ”๋‚˜๋‚˜");
    put(3,"ํฌ๋„");
}};

/* ์ „์ฒด ์ถœ๋ ฅ : {1=์‚ฌ๊ณผ, 2=๋ฐ”๋‚˜๋‚˜, 3=ํฌ๋„} */
System.out.println(map); 

/* key๊ฐ’ 1์˜ value์–ป๊ธฐ : ์‚ฌ๊ณผ */
System.out.println(map.get(1));
		
/* entrySet() ํ™œ์šฉ */
for (Entry<Integer, String> entry : map.entrySet()) {
    System.out.println("[Key]:" + entry.getKey() + " [Value]:" + entry.getValue());
}
/* [Key]:1 [Value]:์‚ฌ๊ณผ
   [Key]:2 [Value]:๋ฐ”๋‚˜๋‚˜
   [Key]:3 [Value]:ํฌ๋„ */

/* KeySet() ํ™œ์šฉ */

/* ์ €์žฅ๋œ key๊ฐ’ ํ™•์ธ */
for(Integer i : map.keySet()){ 
    System.out.println("[Key]:" + i + " [Value]:" + map.get(i));
}
/* [Key]:1 [Value]:์‚ฌ๊ณผ
   [Key]:2 [Value]:๋ฐ”๋‚˜๋‚˜
   [Key]:3 [Value]:ํฌ๋„ */

 

 Iterator ์‚ฌ์šฉ (Map์•ˆ์˜ ์ „์ฒด ์š”์†Œ๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ)

/* ์ดˆ๊ธฐ๊ฐ’ ์ง€์ • */
HashMap<Integer,String> map = new HashMap<Integer,String>(){{
    put(1,"์‚ฌ๊ณผ");
    put(2,"๋ฐ”๋‚˜๋‚˜");
    put(3,"ํฌ๋„");
}};
		
/* entrySet().iterator() */
Iterator<Entry<Integer, String>> entries = map.entrySet().iterator();

while(entries.hasNext()){
    Map.Entry<Integer, String> entry = entries.next();
    System.out.println("[Key]:" + entry.getKey() + " [Value]:" +  entry.getValue());
}
/* [Key]:1 [Value]:์‚ฌ๊ณผ
   [Key]:2 [Value]:๋ฐ”๋‚˜๋‚˜
   [Key]:3 [Value]:ํฌ๋„ */
		
/* keySet().iterator() */
Iterator<Integer> keys = map.keySet().iterator();

while(keys.hasNext()){
    int key = keys.next();
    System.out.println("[Key]:" + key + " [Value]:" +  map.get(key));
}
/* [Key]:1 [Value]:์‚ฌ๊ณผ
   [Key]:2 [Value]:๋ฐ”๋‚˜๋‚˜
   [Key]:3 [Value]:ํฌ๋„ */

์ฐธ๊ณ  : ๋งํฌ

๐Ÿ”ธ HashMap - Key ๊ฐ’ ์ถœ๋ ฅ

import java.util.Map.Entry;
import java.util.*;

public class MapTest{

	public static void main(String[] args){
    	
        Map<String, Integer> map = new HashMap<String, Integer>();
        
        map.put("Key1",1);
        map.put("Key2",2);
        map.put("Key3",3);
        map.put("Key4",4);
        map.put("Key5",5);
        
        /* ๋ฐฉ๋ฒ• 1 - KeySet() : key */
        for(String key : map.keySet()){
        	System.out.println(key);
        }
        
        /* ๋ฐฉ๋ฒ• 2 - entrySet() : key/value */
        for(Entry<String, Integer>elem : map.entrySet()){
        	System.out.println(elem.getKey() + " " + elem.getValue());
        }
        
        /* ๋ฐฉ๋ฒ• 3 - Iterator */
        
        // Iterator 1. keySet()
        Iterator<String> keys = map.keySet().iterator();
        while(keys.hasNext()){
        	String key = keys.next();
            System.out.println(key);
        }
        
        // Iterator 2. keySet()
        Set set = map.keySet();
        Iterator iterator = set.iterator();
        while(iterator.hasNext()){
        	String key = (String)iterator.next();
            System.out.println(key);
        }
        
        // Iterator 3. entrySet() : key/value
        Set set2 = map.entrySet();
        Iterator iterator2 = set2.iterator();
        while(iterator2.hasNext()){
        	Entry<String,Integer>entry = (Entry)iterator2.next();
            String key = (String)entry.getKey();
            int value = (Integer)entry.getValue();
            System.out.println(key);
            System.out.println(value);
        }
    }
}

 

 HashMap - getOfDefault()

Integer getOrDefault(Object key, Integer defaultValue)

ํ•ด๋‹น key๊ฐ’์ด ์กด์žฌํ•˜๋ฉด key์˜ value๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ด ๋ฉ”์†Œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ์ค‘๋ณต๋˜๋Š” ๊ฐ’์ด ๋ช‡ ๊ฐœ ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

import java.util.HashMap;
import java.util.Map;

public class Main {
	public static void main(String[] args) {
	String[] arr= {"aaa","aaa","bbb","ccc","ddd","ccc","eee"};
		
	Map<String, Integer> map = new HashMap<String, Integer>();
	for(String key : arr) {
		map.put(key, map.getOrDefault(key, 0)+1);
	}
	System.out.println(map);
	}
}

์ถœ๋ ฅ๊ฒฐ๊ณผ------
{aaa=2, ccc=2, bbb=1, eee=1, ddd=1}
300x250

์ฝ”๋“œ