1. HashMap์ด๋?
HashMap์ ์๋ฐ์ ์ปฌ๋ ์ ํ๋ ์์ํฌ์์ ์ ๊ณต๋๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ค ํ๋๋ก, key-value ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค. key์ value๋ ๋ชจ๋ ๊ฐ์ฒด๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, HashMap์ key๋ฅผ ํตํด value์ ์ ๊ทผํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.
2. HashMap ์ ์ธ๊ณผ ์ด๊ธฐํํ๊ธฐ
HashMap์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋จผ์ ์ ์ธ๊ณผ ์ด๊ธฐํ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํฉ๋๋ค. ๋ค์์ HashMap์ ์ ์ธํ๊ณ ์ด๊ธฐํํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
HashMap<KeyType, ValueType> hashMap = new HashMap<>();
์ฌ๊ธฐ์ KeyType์ key์ ์๋ฃํ์, ValueType์ value์ ์๋ฃํ์ ๋ํ๋ ๋๋ค.
3. HashMap์ ์์ ์ถ๊ฐํ๊ธฐ
HashMap์ ์์๋ฅผ ์ถ๊ฐํ ๋๋ put()
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. put() ๋ฉ์๋๋ key์ value๋ฅผ ์ธ์๋ก ๋ฐ์ผ๋ฉฐ, ํด๋น key-value ์์ HashMap์ ์ถ๊ฐํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ด ์์๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค.
hashMap.put(key, value);
4. HashMap์์ ์์ ๊ฐ์ ธ์ค๊ธฐ
HashMap์์ ํน์ key์ ํด๋นํ๋ value๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์๋ get()
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. get() ๋ฉ์๋๋ key๋ฅผ ์ธ์๋ก ๋ฐ๊ณ , ํด๋น key์ ๋์ํ๋ value๋ฅผ ๋ฐํํฉ๋๋ค. ๋ค์์ get() ๋ฉ์๋์ ์ฌ์ฉ ์์์
๋๋ค.
ValueType value = hashMap.get(key);
5. HashMap ์์ ์ญ์ ํ๊ธฐ
HashMap์์ ํน์ key์ ํด๋นํ๋ ์์๋ฅผ ์ญ์ ํ๊ธฐ ์ํด์๋ remove()
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. remove() ๋ฉ์๋๋ key๋ฅผ ์ธ์๋ก ๋ฐ๊ณ , ํด๋น key์ ๋์ํ๋ ์์๋ฅผ HashMap์์ ์ ๊ฑฐํฉ๋๋ค. ๋ค์์ remove() ๋ฉ์๋์ ์ฌ์ฉ ์์์
๋๋ค.
hashMap.remove(key);
์์ ์์ ๋ค์ HashMap์ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด๋ฉฐ, ์ถ๊ฐ์ ์ผ๋ก ๋ค์ํ ๋ฉ์๋๋ค์ ํตํด HashMap์ ์ข ๋ ์ ์ฐํ๊ฒ ํ์ฉํ ์ ์์ต๋๋ค. HashMap์ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ฒ์์ ์ํ ์๋ฃ๊ตฌ์กฐ๋ก ๋ง์ด ์ฌ์ฉ๋๋ฏ๋ก, ์์๋๋ฉด ์ ์ฉํ ์๋ฐ์ HashMap์ ๋ํด ํ์ตํด๋ณด๋๋ก ํฉ์๋ค.
1. HashMap์ด๋?
HashMap์ ์๋ฐ์ ์ปฌ๋ ์ ํ๋ ์์ํฌ์์ ์ ๊ณต๋๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ค ํ๋์ ๋๋ค. HashMap์ key-value ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ๋ก, ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ฒ์ํ๋ ๋ฐ ํจ์จ์ ์ ๋๋ค.
HashMap์ key์ value์ ์์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ๊ฐ key์ value๋ ๊ฐ์ฒด(Object) ํ์ ์ผ๋ก ์ ์ฅ๋ฉ๋๋ค. ํ๋์ HashMap์๋ ์ค๋ณต๋ key๋ ํ์ฉ๋์ง ์์ผ๋ฉฐ, ํ๋์ key์ ์ฌ๋ฌ ๊ฐ์ value๋ฅผ ๋งคํํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋์ผํ value๋ฅผ ๊ฐ์ง ์ฌ๋ฌ ๊ฐ์ key๋ ํ์ฉ๋ฉ๋๋ค.
HashMap์ ๋ด๋ถ์ ์ผ๋ก ๋ฐฐ์ด๊ณผ ๋งํฌ๋ ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํฉ๋๋ค. ๋ฐฐ์ด์ ๊ฐ ์์๋ ๋ฒํท(bucket)์ด๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ฉฐ, ๋ฒํท์ ๋งํฌ๋ ๋ฆฌ์คํธ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ์ด๋ ๊ฒ ํจ์ผ๋ก์จ ๋ฐ์ดํฐ์ ์ถ๊ฐ, ๊ฒ์, ์ญ์ ๊ฐ ์ ์ํ๊ฒ ์ด๋ฃจ์ด์ง ์ ์์ต๋๋ค.
๋ํ, HashMap์ ์์๋ฅผ ๋ณด์ฅํ์ง ์์ต๋๋ค. ์ฆ, ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ์์๋๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ ๊ฒ์ ๋ณด์ฅํ์ง ์์ต๋๋ค.
HashMap์ ํนํ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ๋ ์ ์ฉํ๋ฉฐ, ํจ์จ์ ์ธ ๊ฒ์์ ์ํด ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ฐ์ดํฐ์ ์ถ๊ฐ, ์ญ์ ๋ฅผ ์ํด์๋ ๋งํฌ๋ ๋ฆฌ์คํธ๋ฅผ ํ์ํด์ผ ํ๋ฏ๋ก, ๊ฒ์๋ณด๋ค๋ ๋นํจ์จ์ ์ผ ์ ์์ต๋๋ค.
HashMap์ ์๊ฐ ๋ณต์ก๋๋ ์ผ๋ฐ์ ์ผ๋ก O(1)๋ก, ์์ ์๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค. ๋จ, ์ถฉ๋์ด ๋ฐ์ํ ๊ฒฝ์ฐ(๋ ๊ฐ ์ด์์ key๊ฐ ๊ฐ์ ๋ฒํท์ ๋งคํ๋ ๊ฒฝ์ฐ) ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค.
2. HashMap ์ ์ธ๊ณผ ์ด๊ธฐํํ๊ธฐ
HashMap์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋จผ์ ํด๋น ๊ฐ์ฒด๋ฅผ ์ ์ธํ๊ณ ์ด๊ธฐํํด์ผ ํฉ๋๋ค. HashMap ๊ฐ์ฒด๋ฅผ ์ ์ธํ๊ณ ์ด๊ธฐํํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
HashMap<KeyType, ValueType> hashMap = new HashMap<>();
์ฌ๊ธฐ์ KeyType
์ key์ ์๋ฃํ์, ValueType
์ value์ ์๋ฃํ์ ๋ํ๋
๋๋ค. ๋ฐ๋ผ์ ์ํ๋ ์๋ฃํ์ ๋ง๊ฒ KeyType
๊ณผ ValueType
์ ์ง์ ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, key์ value๊ฐ ๋ชจ๋ String
์ธ ๊ฒฝ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์ธ ๋ฐ ์ด๊ธฐํํ ์ ์์ต๋๋ค.
HashMap<String, String> hashMap = new HashMap<>();
๊ธฐ๋ณธ์ ์ผ๋ก HashMap์ ์ ๋ค๋ฆญ(Generic)์ผ๋ก ์ ์ธ๋์ด ์์ผ๋ฉฐ, ์ ๋ค๋ฆญ์ ์ฌ์ฉํจ์ผ๋ก์จ ๋ค์ํ ์๋ฃํ์ ๋ํด ์ ์ฐํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค.
HashMap์ ์ ์ธํ๊ณ ์ด๊ธฐํํ ํ์๋ key-value ์์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ณ ๊ฒ์ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ์ ์ธ๋ HashMap ๊ฐ์ฒด๋ ์ดํ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
3. HashMap์ ์์ ์ถ๊ฐํ๊ธฐ
HashMap์ ์์๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด์๋ put()
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ๋ฉ์๋๋ ์ง์ ๋ key์ value๋ฅผ HashMap์ ์ถ๊ฐํฉ๋๋ค. ๋ค์์ HashMap์ ์์๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ์์ธํ ์ค๋ช
ํฉ๋๋ค.
hashMap.put(key, value);
์ฌ๊ธฐ์ key
๋ ์ถ๊ฐํ๋ ค๋ ์์์ key์ด๊ณ , value
๋ ์ถ๊ฐํ๋ ค๋ ์์์ value์
๋๋ค. ์๋ฅผ ๋ค์ด, key๊ฐ "name"์ด๊ณ value๊ฐ "John"์ธ ์์๋ฅผ HashMap์ ์ถ๊ฐํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์์ต๋๋ค.
hashMap.put("name", "John");
HashMap์ key์ ๋ํ ์ค๋ณต์ ํ์ฉํ์ง ์๊ธฐ ๋๋ฌธ์, ์ด๋ฏธ ์กด์ฌํ๋ key๋ฅผ ์ฌ์ฉํ์ฌ ์์๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ํ๋ค๋ฉด ๊ธฐ์กด์ value๋ฅผ ๋ฎ์ด์์๋๋ค. ์๋ฅผ ๋ค์ด, ์์ ์์์์ key๊ฐ "name"์ธ ์์๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ค๋ฉด, ํด๋น ์์์ value๋ "John"์ผ๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค.
๋ํ, HashMap์ ์ฌ๋ฌ ๊ฐ์ ์์๋ฅผ ๋์์ ์ถ๊ฐํ ์ ์์ผ๋ฉฐ, put() ๋ฉ์๋๋ฅผ ์ฌ๋ฌ ๋ฒ ํธ์ถํ์ฌ ํด๋น ์์๋ฅผ ์ถ๊ฐํ ์๋ ์์ต๋๋ค.
hashMap.put("age", "25");
hashMap.put("country", "USA");
์์ ์ฝ๋๋ "age"์ "country"๋ผ๋ key๋ฅผ ๊ฐ์ง ์์๋ฅผ HashMap์ ์ถ๊ฐํ๋ ์์์ ๋๋ค.
HashMap์ key์ value์ ํ์ ์ด ๊ฐ์ฒด(Object)์ฌ์ผ ํ๊ธฐ ๋๋ฌธ์, ๊ธฐ๋ณธ ์๋ฃํ์ ์ถ๊ฐํ ๊ฒฝ์ฐ์๋ ํด๋น ์๋ฃํ์ ๊ฐ์ฒด๋ก ๋ฐ๊ฟ์ฃผ์ด์ผ ํฉ๋๋ค. ์๋ฐ์์๋ ๊ธฐ๋ณธ ์๋ฃํ์ Wrapper ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ก ๋ณํํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, int ์๋ฃํ์ ์ถ๊ฐํ๋ ค๋ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด ์์ฑํ ์ ์์ต๋๋ค.
hashMap.put("age", Integer.valueOf(25));
์์ ์ฝ๋์์ Integer.valueOf(25)
๋ int ์๋ฃํ์ธ 25๋ฅผ Integer ๊ฐ์ฒด๋ก ๋ณํํ๋ ์ญํ ์ ํฉ๋๋ค.
4. HashMap์์ ์์ ๊ฐ์ ธ์ค๊ธฐ
HashMap์์ ์์๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์๋ get()
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ๋ฉ์๋๋ ์ง์ ๋ key์ ๋์ํ๋ value๋ฅผ ๋ฐํํฉ๋๋ค. ๋ค์์ HashMap์์ ์์๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ์์ธํ ์ค๋ช
ํฉ๋๋ค.
ValueType value = hashMap.get(key);
์ฌ๊ธฐ์ key
๋ ๊ฐ์ ธ์ค๋ ค๋ ์์์ key์ด๊ณ , value
๋ ๋ฐํ๋ ์์์ value๋ฅผ ์ ์ฅํ ๋ณ์์
๋๋ค. ์๋ฅผ ๋ค์ด, key๊ฐ "name"์ธ ์์์ value๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์์ต๋๋ค.
String name = hashMap.get("name");
์์ ์์์์ name
๋ณ์์๋ key๊ฐ "name"์ธ ์์์ value๊ฐ ์ ์ฅ๋ฉ๋๋ค. ๋ง์ฝ HashMap์ ํด๋น key๊ฐ ์กด์ฌํ์ง ์๋๋ค๋ฉด, null
์ด ๋ฐํ๋ฉ๋๋ค.
HashMap์์ ์์๋ฅผ ๊ฐ์ ธ์ฌ ๋ ์ฃผ์ํด์ผ ํ ์ ์ key์ ์ค๋ณต์ด ํ์ฉ๋์ง ์๊ธฐ ๋๋ฌธ์, ๋์ผํ key์ ๋์ํ๋ value๋ ํ๋๋ฐ์ ์กด์ฌํ์ง ์๋๋ค๋ ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ get()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ key์ ๋์ํ๋ value๋ฅผ ๋ฐ์์ฌ ๋์๋, ํด๋น key๊ฐ ์กด์ฌํ๋์ง ๋จผ์ ํ์ธํ๋ ๊ฒ์ด ์ข์ต๋๋ค. containsKey()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น key๊ฐ ์กด์ฌํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
if (hashMap.containsKey(key)) {
ValueType value = hashMap.get(key);
// value ์ฌ์ฉํ๊ธฐ
} else {
// key๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ์ฒ๋ฆฌํ๊ธฐ
}
์์ ์ฝ๋์์ if-else
๋ฌธ์ HashMap์ key
๊ฐ ์กด์ฌํ๋์ง ํ์ธํ๊ณ , ์กด์ฌํ๋ค๋ฉด ํด๋น key
์ ๋์ํ๋ value
๋ฅผ ๊ฐ์ ธ์ค๋ ์์์
๋๋ค. key
๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด else
๋ธ๋ก์์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
HashMap์์ ์์๋ฅผ ๊ฐ์ ธ์ฌ ๋๋ key์ ํ์
๊ณผ ์ผ์นํ๋ ํ์
์ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ ์ฅํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ฅผํ
๋ฉด, String
ํ์
์ key์ ๋์ํ๋ value๋ฅผ ๊ฐ์ ธ์ฌ ๋์๋ String
ํ์
์ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
5. HashMap ์์ ์ญ์ ํ๊ธฐ
HashMap์์ ์์๋ฅผ ์ญ์ ํ๊ธฐ ์ํด์๋ remove()
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ด ๋ฉ์๋๋ ์ง์ ๋ key์ ํด๋นํ๋ ์์๋ฅผ HashMap์์ ์ ๊ฑฐํฉ๋๋ค. ๋ค์์ HashMap์์ ์์๋ฅผ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ ์์ธํ ์ค๋ช
ํฉ๋๋ค.
ValueType value = hashMap.remove(key);
์ฌ๊ธฐ์ key
๋ ์ญ์ ํ๋ ค๋ ์์์ key์ด๊ณ , value
๋ ์ญ์ ๋ ์์์ value๋ฅผ ๋ฐํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, key๊ฐ "name"์ธ ์์๋ฅผ ์ญ์ ํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์์ต๋๋ค.
String name = hashMap.remove("name");
์์ ์์์์ name
๋ณ์์๋ ์ญ์ ๋ ์์์ value๊ฐ ์ ์ฅ๋ฉ๋๋ค. ๋ง์ฝ HashMap์ ํด๋น key๊ฐ ์กด์ฌํ์ง ์๋๋ค๋ฉด, null
์ด ๋ฐํ๋ฉ๋๋ค.
HashMap์์ ์์๋ฅผ ์ญ์ ํ ๋์๋ ์ญ์ ํ๋ ค๋ key๊ฐ ์กด์ฌํ๋์ง ๋จผ์ ํ์ธํ๋ ๊ฒ์ด ์ข์ต๋๋ค. containsKey()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น key๊ฐ ์กด์ฌํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
if (hashMap.containsKey(key)) {
ValueType value = hashMap.remove(key);
// value ์ฌ์ฉํ๊ธฐ
} else {
// key๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ์ฒ๋ฆฌํ๊ธฐ
}
์์ ์ฝ๋์์ if-else
๋ฌธ์ HashMap์ key
๊ฐ ์กด์ฌํ๋์ง ํ์ธํ๊ณ , ์กด์ฌํ๋ค๋ฉด ํด๋น key
์ ๋์ํ๋ value
๋ฅผ ์ ๊ฑฐํ๋ ์์์
๋๋ค. key
๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด else
๋ธ๋ก์์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
HashMap์์ ์์๋ฅผ ์ญ์ ํ ๋๋ key์ ํ์
๊ณผ ์ผ์นํ๋ ํ์
์ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ ์ฅํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ฅผํ
๋ฉด, String
ํ์
์ key์ ํด๋นํ๋ value๋ฅผ ์ญ์ ํ ๋์๋ String
ํ์
์ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋๊ธ