์๋
! ์ด ๋ ์จ์์๋ Java HashMap ์ ๋ํด ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค . ์ด์ ์๋ ์์๊ฐ ์์ฒด์ ์ผ๋ก ์ ์ฅ๋๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฐ๊ตฌํ์ต๋๋ค. ๋ฐฐ์ด ๋๋ ArrayList / LinkedList ์ ๋ช ๊ฐ์ง ์์๋ฅผ ์ ์ฅํฉ๋๋ค. ํ์ง๋ง ์์
์ด ์กฐ๊ธ ๋ณ๊ฒฝ๋๋ฉด ์ด๋ป๊ฒ ๋ ๊น์?
๋ค์ ์์
์ ์์ํด ๋ณด์ญ์์ค. ๊ฐ ์ฌ๋์ ์ด๋ฆ๊ณผ ์ฌ๊ถ ๋ฒํธ๋ฅผ ์ ์ฅํ๋ 100๋ช
์ ๋ชฉ๋ก์ ๋ง๋ญ๋๋ค. ์์น์ ์ผ๋ก ์ด๊ฒ์ ๊ทธ๋ ๊ฒ ์ด๋ ต์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ ๋ฌธ์์ด์ ๋ชจ๋ ์
๋ ฅํ ๋ค์ "Amelia Aguilar, 4211 717171"์ด๋ผ๋ ๋ฌธ์์ด ๋ชฉ๋ก์ ๋ง๋ค ์ ์์ต๋๋ค. ํ์ง๋ง ์ด ์๋ฃจ์
์๋ ๋ ๊ฐ์ง ๋จ์ ์ด ์์ต๋๋ค. ์ฒซ์งธ, ์ฌ๊ถ ๋ฒํธ๋ก ๊ฒ์ํ๋ ๊ธฐ๋ฅ์ด ํ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์ด ์ ๋ณด ์ ์ฅ ํ์์ ๊ณ ๋ คํ ๋ ๋ฌธ์ ๊ฐ ๋ ๊ฒ์
๋๋ค. ๋์งธ, ๋์ผํ ์ฌ๊ถ ๋ฒํธ๋ฅผ ๊ฐ์ง ๋ ๋ช
์ ๋ค๋ฅธ ์ฌ๋์ ์์ฑํ๋ ๊ฒ์ ๋ง๋ ๊ฒ์ ์์ต๋๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ ์๋ฃจ์
์ ๊ฐ์ฅ ์ฌ๊ฐํ ๋จ์ ์
๋๋ค. ์ด๊ฒ์ ์ ๋ ํ์ฉ๋์ด์๋ ์ ๋ฉ๋๋ค. ๋ ์ฌ๋์ด ๋์ผํ ์ฌ๊ถ ๋ฒํธ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ์๋ก์ด ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ๋์์ด ๋ฉ๋๋ค: ์ง๋. "์ฐ๊ด ๋ฐฐ์ด"์ด๋ผ๊ณ ๋ ํ์ง๋ง ์ด ์ฉ์ด๋ ์์ฃผ ์ฌ์ฉ๋์ง ์์ต๋๋ค. ๋ ์ผ๋ฐ์ ์ผ๋ก "์ฌ์ " ๋๋ "์ง๋"๋ผ๊ณ ํฉ๋๋ค. :) ์ด์ ์ ๊ณ ๋ คํ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๊ทผ๋ณธ์ ์ผ๋ก ๋ค๋ฅธ ์ ์ ๋ฌด์์
๋๊น? ๋ฌด์๋ณด๋ค Map์ ๋ฐ์ดํฐ๊ฐ ํค-๊ฐ ์์ผ๋ก ์ ์ฅ๋๋ค๋ ์ฌ์ค์ ์์ต๋๋ค. ์ซ์, ๋ฌธ์์ด ๋๋ ๋ค๋ฅธ ํด๋์ค์ ๊ฐ์ฒด ๋ฑ ๋ฌด์์ด๋ ํค์ ๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ค๋ ์ฐ๋ฆฌ๋ Map ํด๋์ค ์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๊ตฌํ์ธ Java HashMap ์ ๊ณต๋ถํ ๊ฒ์
๋๋ค .
๊ทธ๋ ๋ค๋ฉด Java์ HashMap์ ๋ํด ๋ฌด์์ ์์์ผ ํฉ๋๊น?
๋งค์ฐ ์ฝ๊ฒ ์์ฑํ ์ ์์ต๋๋ค.
public static void main(String[] args) {
HashMap<Integer, String> passportsAndNames = new HashMap<>();
}
์ฌ๊ธฐ์์ ์์๋ฅผ "์ซ์-๋ฌธ์์ด" ์์ผ๋ก ์ ์ฅํ๋ ์ฌ์ ์ ๋ง๋ญ๋๋ค. ์ซ์๋ ํค ์ญํ ์ ํ๊ณ ๋ฌธ์์ด์ ๊ฐ ์ญํ ์ ํฉ๋๋ค. ๋ํ ํค ์ ํ(Integer)๊ณผ ๊ฐ ์ ํ(String)์ ์ง์ ํฉ๋๋ค. ์? ์ฒซ์งธ, HashMap ํค๋ ํญ์ ๊ณ ์ ํฉ๋๋ค. ์ฌ๊ถ ๋ฒํธ๋ฅผ ํค๋ก ์ฌ์ฉํ๊ณ ์ค๋ณต์ ํผํ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ์๋ฒฝํ๊ฒ ์ ํฉํฉ๋๋ค. ๊ฐ์ ์ ์ฒด ์ด๋ฆ์ด ์๋ ๋ฌธ์์ด์
๋๋ค(๋ค๋ฅธ ์ฌ๋์ด ๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ์ ์์ผ๋ฏ๋ก ๊ฑฑ์ ํ ํ์๊ฐ ์์ต๋๋ค). HashMap ์ ์ ์์ ์ถ๊ฐํ๋ ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
public class Main {
public static void main(String[] args) {
HashMap<Integer, String> passportsAndNames = new HashMap<>();
passportsAndNames.put (212133, "Bridget Logan");
passportsAndNames.put (162348, "Ivan the Great");
passportsAndNames.put(8082771, "Donald John Trump");
System.out.println(passportsAndNames);
}
}
์ด๋ฅผ ์ํด put() ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค . ๋ํ HashMap์ toString() ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๋ฏ๋ก ์ฝ์์ ํ์ํ ์ ์์ต๋๋ค. ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. {212133=Bridget Logan, 8082771=Donald John Trump, 162348=Ivan the Great} ์ด์ ํค๊ฐ ์ ๋ง ๊ณ ์ ํ์ง ํ์ธํ๊ฒ ์ต๋๋ค. ์ง๋์์ ์ด๋ฏธ ์ฌ์ฉ๋ ํค๋ฅผ ์ฌ์ฉํ์ฌ ์ ์์๋ฅผ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค .
public static void main(String[] args) {
HashMap<Integer, String> passportsAndNames = new HashMap<>();
passportsAndNames.put (212133, "Bridget Logan");
passportsAndNames.put (162348, "Ivan the Great");
passportsAndNames.put(8082771, "Donald John Trump");
passportsAndNames.put(162348, "Albert Kent");// This key has already been used
System.out.println(passportsAndNames);
}
์ถ๋ ฅ: {212133=Bridget Logan, 8082771=Donald John Trump, 162348=Albert Kent} ๋ณด์๋ค์ํผ ํค 162348 ๊ณผ ๊ด๋ จ๋ ์ด์ ๊ฐ์ ๋ฎ์ด์ผ์ต๋๋ค. ์ด์ ๋๋ฌธ์ "ํค"๋ผ๋ ์ฉ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. HashMap ์ ๊ฐ์ ํค๋ฅผ ์ฌ์ฉํ์ฌ ์ก์ธ์คํ์ง๋ง ๊ทธ ๋ฐ๋๋ ์๋๋๋ค. ๊ฐ์ด ๊ณ ์ ํ์ง ์์ ์ ์์ผ๋ฏ๋ก ๊ฐ์ ์ฌ์ฉํ์ฌ ํค๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์ด๋ HashMap ์์ ์์๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋ ์ ๊ฑฐํ ๋ ๋ช
ํํ๊ฒ ๋ณผ ์ ์์ต๋๋ค .
public static void main(String[] args) {
HashMap<Integer, String> passportsAndNames = new HashMap<>();
passportsAndNames.put (212133, "Bridget Logan");
passportsAndNames.put (162348, "Ivan the Great");
passportsAndNames.put(8082771, "Donald John Trump");
String lidiaName = passportsAndNames.get(212133);
System.out.println(lidiaName);
passportsAndNames.remove(162348);
System.out.println(passportsAndNames);
}
๊ฐ์ ๊ฐ์ ธ์ค๊ฑฐ๋ ์ฌ์ ์์ ์์ ์ ๊ฑฐํ๋ ค๋ฉด ๊ฐ์ ํด๋นํ๋ ๊ณ ์ ํค๋ฅผ get() ๋ฐ remove() ์ ์ ๋ฌํด์ผ ํฉ๋๋ค. ๋ฐฐ์ด ๋ฐ ๋ชฉ๋ก๊ณผ ๋ฌ๋ฆฌ Java์ HashMap ์๋ ์ซ์ ์ธ๋ฑ์ค๊ฐ ์์ต๋๋ค. ํค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์ก์ธ์คํฉ๋๋ค. ์ฝ์ ์ถ๋ ฅ: Bridget Logan {212133= Bridget Logan, 8082771=Donald John Trump} ArrayList ๋ฐ LinkedList ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋ชฉ๋ก์ ํน์ ์์๊ฐ ํฌํจ๋์ด ์๋์ง ํ์ธํ ์ ์์ต๋๋ค. Java HashMap์ ์ฌ์ฉํ๋ฉด ์ด ์์
์ ์ํํ ์ ์์ต๋๋ค. ๋ํ ์์ ๋ ๊ตฌ์ฑ์ ๋ชจ๋์ ๋ํด ์ด ์์
์ ์ํํ ์ ์์ต๋๋ค. ์ด๊ฒ์ containsKey () (ํค ํ์ธ) ๋ฐ containsValue()(๊ฐ ํ์ธ) ๋ฉ์๋๋ ๋ค์์ ์ํ ๊ฒ์
๋๋ค.
public static void main(String[] args) {
HashMap<Integer, String> passportsAndNames = new HashMap<>();
passportsAndNames.put (212133, "Bridget Logan");
passportsAndNames.put (162348, "Ivan the Great");
passportsAndNames.put(8082771, "Donald John Trump");
System.out.println(passportsAndNames.containsKey(11111));
System.out.println(passportsAndNames.containsValue("Donald John Trump"));
}
์ถ๋ ฅ: false true Java์์ HashMap ์ ๋ ๋ค๋ฅธ ํธ๋ฆฌํ ๊ธฐ๋ฅ์ ๋ชจ๋ ํค์ ๋ชจ๋ ๊ฐ์ ๊ฐ๋ณ ๋ชฉ๋ก์ ์ป์ ์ ์๋ค๋ ์ฌ์ค์
๋๋ค. ์ด๋ keySet() ๋ฐ values() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค .
public class Main {
public static void main(String[] args) {
HashMap<Integer, String> passportsAndNames = new HashMap<>();
passportsAndNames.put (212133, "Bridget Logan");
passportsAndNames.put (162348, "Ivan the Great");
passportsAndNames.put(8082771, "Donald John Trump");
Set keys = passportsAndNames.keySet();
System.out.println("Keys: " + keys);
ArrayList<String> values = new ArrayList<>(passportsAndNames.values());
System.out.println("Values: " + values);
}
}
ํค๋ ์์ง ๋ค๋ฃจ์ง ์์ Set ๋ก ์ถ์ถ๋ฉ๋๋ค. ๋ฐ๋ณต๋๋ ์์๋ฅผ ํฌํจํ ์ ์๋ค๋ ์ ์์ ํน๋ณํฉ๋๋ค. ์ด์ ์ค์ํ ๊ฒ์ ๋ชจ๋ ํค ๋ชฉ๋ก์ HashMap์์ ๋ณ๋ ์ ์ปฌ๋ ์
์ผ๋ก ๊ฒ์ํ ์ ์๋ค๋ ์ ์ ๊ธฐ์ตํ๋ ๊ฒ์
๋๋ค. ์์ ์์๋ ๊ฐ์ ์ผ๋ฐ ArrayList ์ ์ ์ฅํ์ต๋๋ค . ์ฝ์ ์ถ๋ ฅ: Keys: [212133, 8082771, 162348] Values: [Bridget Logan, Donald John Trump, Ivan the Great] size () ๋ฐ clear() ๋ฉ์๋๋ ์ฐ๋ฆฌ๊ฐ ๋
ผ์ํ ์ด์ ๊ตฌ์กฐ์์์ ์ ํํ ๋์ผํ ์์
์ ์ํํฉ๋๋ค. ์ฒซ ๋ฒ์งธ๋ ํ์ฌ ์ฌ์ ์ ์๋ ์์์ ์๋ฅผ ๋ฐํํ๊ณ ๋ ๋ฒ์งธ๋ ๋ชจ๋ ์์๋ฅผ โโ์ ๊ฑฐํฉ๋๋ค.
public static void main(String[] args) {
HashMap<Integer, String> passportsAndNames = new HashMap<>();
passportsAndNames.put (212133, "Bridget Logan");
passportsAndNames.put (162348, "Ivan the Great");
passportsAndNames.put(8082771, "Donald John Trump");
System.out.println(passportsAndNames.size());
passportsAndNames.clear();
System.out.println(passportsAndNames);
}
์ถ๋ ฅ: 3 {} HashMap ์ ํ๋ ์ด์์ ์์๊ฐ ์๋์ง ํ์ธํ๋ ค๋ฉด isEmpty() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค .
public static void main(String[] args) {
HashMap<Integer, String> passportsAndNames = new HashMap<>();
passportsAndNames.put (212133, "Bridget Logan");
passportsAndNames.put (162348, "Ivan the Great");
passportsAndNames.put(8082771, "Donald John Trump");
if (!passportsAndNames.isEmpty()) {
System.out.println(passportsAndNames);
}
}
์ถ๋ ฅ: {212133=Bridget Logan, 8082771=Donald John Trump, 162348=Ivan the Great} ์ด์ ์ฌ์ ํ์ธ ํ์๋ง ์ฝ์์ ์ถ๋ ฅํฉ๋๋ค. :) ๋ ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ์ ์ ๋ ๊ฐ์ ๋งต์ ํ๋๋ก ๊ฒฐํฉํ ์ ์๋ค๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ putAll() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค. ์ฒซ ๋ฒ์งธ HashMap ์์ ํธ์ถํ๊ณ ๋ ๋ฒ์งธ๋ฅผ ์ธ์๋ก ์ ๋ฌํ๋ฉด ๋ ๋ฒ์งธ์ ์์๊ฐ ์ฒซ ๋ฒ์งธ์ ์ถ๊ฐ๋ฉ๋๋ค.
public static void main(String[] args) {
HashMap<Integer, String> passportsAndNames = new HashMap<>();
HashMap<Integer, String> passportsAndNames2 = new HashMap<>();
passportsAndNames.put (212133, "Bridget Logan");
passportsAndNames.put (162348, "Ivan the Great");
passportsAndNames.put(8082771, "Donald John Trump");
passportsAndNames2.put(917352, "Clifford Patrick");
passportsAndNames2.put(925648, "Mitchell Salgado");
passportsAndNames.putAll(passportsAndNames2);
System.out.println(passportsAndNames);
}
์ถ๋ ฅ: {917352=Clifford Patrick, 212133=Bridget Logan, 8082771=Donald John Trump, 925648=Mitchell Salgado, 162348=Ivan the Great} passportsAndNames2์ ๋ชจ๋ ์์ด passportsAndNames ์ ๋ณต์ฌ๋์์ต๋๋ค . ์ด์ ์ข ๋ ๋ณต์กํ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ํนํ ๋ฃจํ์์ HashMap์ ๋ฐ๋ณตํฉ๋๋ค.
for (Map.Entry<Integer, String> entry: passportsAndNames.entrySet()) {
System.out.println(entry);
}
Map.Entry ํด๋์ค๋ ์ฌ์ ๋ด๋ถ์ ํค-๊ฐ ์์ ๋ํ๋
๋๋ค . entrySet () ๋ฉ์๋๋ HashMap ์ ๋ชจ๋ ์ ๋ชฉ๋ก์ ๋ฐํํฉ๋๋ค . ๋งต์ ์ด๋ฌํ Map.Entry ์์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฏ๋ก ๋ณ๋์ ํค๋ ๊ฐ์ด ์๋๋ผ ์์ ํตํด ๋ฐ๋ณตํฉ๋๋ค. ์ถ๋ ฅ: 212133=Bridget Logan 8082771=Donald John Trump 162348=Ivan the Great ๋ํ HashMap ์ ๋ํ ๊ณต์ Oracle ๋ฌธ์๋ฅผ ๊ณต๋ถํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค .
GO TO FULL VERSION