Java ํ๋ก๊ทธ๋จ์์ ์ฌ์ ์ ๋ง๋ค์ด์ผ ํ๋ ๊ฒฝ์ฐ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฐ์ฅ ๋
ผ๋ฆฌ์ ์ธ ๋ฐฉ๋ฒ์ ์ฌ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์
๋๋ค. ์ด ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด "ํค - ๊ฐ" ํ์์ผ๋ก ์ ๋ณด๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค. Java์๋ ํน๋ณํ Dictionary ํด๋์ค์ ๊ทธ ์์์ธ Hashtable ์ด ์์ต๋๋ค . ๋ํ "ํค-๊ฐ" ์์ ์ ์ฅํ๋ Map ์ธํฐํ์ด์ค์ HashMap ํด๋์ค๋ ์์ต๋๋ค . ๋ฐ๋ผ์ Java ์ฌ์ ์ ๋ง๋๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
์ฌ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ
๋ฐ๋ผ์ Dictionary ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ์ ๋ณด๋ฅผ ํค-๊ฐ ์กฐํฉ์ผ๋ก ์ ์ฅํฉ๋๋ค. ์ฆ, ๋ชจ๋ ๊ฐ๊ณผ ํค๋ฅผ ์ฐ๊ฒฐํ๊ณ (์: id์ผ ์ ์์) ์ด ์์ ์ฌ์ ์ ์ ๋ ฅํฉ๋๋ค. ์ฌ์ ์ ์์ ์ฃผ์ ์ง์ , ์ญ์ , ์ฌ์ ๊ฒ์์ ํค์ ์ํด ์ํ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ด๋ฆ(ํค)์ด ์ ํ๋ฒํธ(๊ฐ)์ ํด๋นํ๋ ์ ํ๋ฒํธ๋ถ์ ๊ฐ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌ์ฑํ๋ ๊ฒ์ด ํธ๋ฆฌํด ๋ณด์ ๋๋ค.์ฌ์ ํด๋์ค ๋ฐ ํ์ฅ
์ฐ์ java.util.Dictionary <K, V> util.Dictionary๋ ์ถ์ ํด๋์ค์ ๋๋ค. ํค-๊ฐ ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ฉฐ ๋งต๊ณผ ์ ์ฌํ๊ฒ ์๋ํฉ๋๋ค. ํค๊ฐ ์ฃผ์ด์ง๋ฉด ๊ฐ์ ์ ์ฅํ ์ ์๊ณ ํ์ํ ๋ ํค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ๋ค์ ๊ฒ์ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํค-๊ฐ ์์ ๋ชฉ๋ก์ ๋๋ค.
public abstract class Dictionary<K,V> extends Object
์ด ํด๋์ค๋ ์ถ์ ํด๋์ค์ด๋ฏ๋ก ์ง์ ์์
ํ์ง ์์ต๋๋ค. ์ฌ์ ์๋ Hashtable ์ ์ง๊ณ ํ์ ํด๋์ค๊ฐ ์์ต๋๋ค . ๋ฐ๋ผ์ Java๋ก ์ฌ์ ์ ๋ง๋ค๋ ค๋ฉด Hashtable ์ ์ฌ์ฉํ ์ ์์ต๋๋ค . ์ด ํด๋์ค๋ ํค๋ฅผ ๊ฐ์ ๋งคํํ๋ ํด์ ํ
์ด๋ธ์ ๊ตฌํํ๋ฉฐ null์ด ์๋ ๊ฐ์ฒด๋ฅผ ํค ๋๋ ๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. Java ๊ณ์ธต ๊ตฌ์กฐ์์ Hashtable์ Dictionary๋ฅผ ํ์ฅ ํ๊ณ Map์ ๊ตฌํํฉ๋๋ค . ์๋ฅผ ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ์ฐ๋ฆฌ๋ Hashtable์ ๊ธฐ๋ฐ์ผ๋ก ๊ณ ์ ์ ์ธ ์ฌ์ ์ธ ์ ํ๋ฒํธ๋ถ๋ฅผ ๋ง๋ค ๊ฒ์
๋๋ค .
Dictionary phoneBook = new Hashtable();
์ด๋ฐ ์์ผ๋ก ์์ฑํ๋ฉด ์ผ๋ถ ์์
์ ์ ํ ์บ์คํ
์ ์ ์ฉํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํค ์ถ์ถ์ ๊ฒฝ์ฐ์
๋๋ค.
System.out.println(((Hashtable) phoneBook).keySet());
์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
Dictionary phoneBook = new Hashtable ();
์
Hashtable phoneBook = new Hashtable ();
์ด ์์์๋ ๋ช
ํ์ฑ์ ์ํด ์ฒซ ๋ฒ์งธ ์ต์
์ ๊ทธ๋๋ก ๋ก๋๋ค.
import java.util.Dictionary;
import java.util.Hashtable;
public class DictionaryDemo {
public static void main(String[] args) {
Dictionary phoneBook = new Hashtable();
// put() method
phoneBook.put("Johnny Walker", "2178");
phoneBook.put("Andrew Arnold", "1298");
phoneBook.put("Ivy Briggs", "1877");
phoneBook.put("Ricky McBright", "2001");
//print out Hashtable out
System.out.println(phoneBook);
//let's get the value using the key
System.out.println(phoneBook.get("Ivy Briggs"));
//there's no such key in out Hashtable
System.out.println(phoneBook.get("Sol Frank"));
//Is there a record with the "Johnny Walker" key?
System.out.println(((Hashtable) phoneBook).containsKey("Johnny Walker"));
//all keys of the Hashtable
System.out.println(((Hashtable) phoneBook).keySet());
//values from Hashtable
System.out.println(((Hashtable) phoneBook).values());
//the quantity of records
System.out.println(phoneBook.size());
//removing one record
phoneBook.remove("Andrew Arnold");
System.out.println(phoneBook);
}
}
์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{Andrew Arnold=1298, Johnny Walker=2178, Ricky McBright=2001, Ivy Briggs=1877} 1877 null true [Andrew Arnold, Johnny Walker, Ricky McBright, Ivy Briggs] [1298, 2178, 2001, 1877] 4 {Johnny Walker =2178, ๋ฆฌํค ๋งฅ๋ธ๋ผ์ดํธ=2001, ์์ด๋น ๋ธ๋ฆญ์ค=1877}
HashMap์ ์ฌ์ ์ผ๋ก
HashMap์ Hashtable ๊ณผ ๋ฌ๋ฆฌ Dictionary ์ ์ง๊ณ ํ์์ด ์๋๋๋ค . ๊ทธ๋ฌ๋ ๋ง์ ๊ธฐ๋ฅ์ผ๋ก ์ธํด ๋๋ถ๋ถ์ ๊ฒฝ์ฐ HashMap์ ์ฌ์ฉํ์ฌ ์ฌ์ ์ ๋ง๋๋ ๊ฒ์ด ์ข์ต๋๋ค . HashMap ํด๋์ค๋ ๊ธฐ๋ฅ ๋ฉด ์์ Hashtable ๊ณผ ๋งค์ฐ ์ ์ฌํฉ๋๋ค . ์ฃผ์ ์ฐจ์ด์ ์ Hashtable์ ๋ฉ์๋๋ ๋๊ธฐํ ๋์ง๋ง HashMap์ ๋๊ธฐํ๋์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. Hashtable ์ ๋๊ธฐํ๋ ์ฝ๋์ ์ฑ๋ฅ์ ์ ํ์ํต๋๋ค. ๋ํ HashMap ํด๋์ค๋ Hashtable ๊ณผ ๋ฌ๋ฆฌ, ํค(1)๋ก null์ ์ฌ์ฉํ๊ณ ๊ฐ์ผ๋ก null ์งํฉ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ์ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ์ ์์ ์์ ์ ํํ ๋์ผํ๊ฒ ๋ณด์ผ ๊ฒ์ ๋๋ค. ์ ์ผํ ์ฐจ์ด์ ์ ์ปฌ๋ ์ ์ ์ ํ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ Java์์ ์ฌ์ ์ผ๋ก ์์ ํ๋ ๋ฐ ์ ํธ๋๋ ๋ฐฉ๋ฒ์ ๋๋ค.
import java.util.HashMap;
import java.util.Map;
public class DictionaryDemo2 {
public static void main(String[] args) {
Map<String, String> phoneBook = new HashMap<String,String>();
phoneBook.put("Johnny Walker", "2178");
phoneBook.put("Andrew Arnold", "1298");
phoneBook.put("Ivy Briggs", "1877");
phoneBook.put("Ricky McBright", "2001");
System.out.println(phoneBook);
System.out.println(phoneBook.get("Johnny Walker"));
System.out.println(phoneBook.get("Ivy Briggs"));
System.out.println(phoneBook.get("Unknown Friend"));
System.out.println(phoneBook.containsKey("Johnny Walker"));
System.out.println(phoneBook.containsKey("Unknown Friend"));
System.out.println(phoneBook.keySet());
System.out.println(phoneBook.values());
System.out.println(phoneBook.size());
phoneBook.remove("Andrew Arnold");
System.out.println(phoneBook);
}
}
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{Andrew Arnold=1298, Ivy Briggs=1877, Ricky McBright=2001, Johnny Walker=2178} 2178 1877 null true false [Andrew Arnold, Ivy Briggs, Ricky McBright, Johnny Walker] [1298, 1877, 2001, 2178] 4 { ์์ด๋น ๋ธ๋ฆญ์ค=1877, ๋ฆฌํค ๋งฅ๋ธ๋ผ์ดํธ=2001, ์กฐ๋ ์์ปค=2178}
GO TO FULL VERSION