CodeGym /Java Blog /๋ฌด์ž‘์œ„์˜ /Java์—์„œ ์‚ฌ์ „์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•
John Squirrels
๋ ˆ๋ฒจ 41
San Francisco

Java์—์„œ ์‚ฌ์ „์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

๋ฌด์ž‘์œ„์˜ ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
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}
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION