๋งต(Map)

Joy๐ŸŒฑยท2023๋…„ 1์›” 6์ผ
0

โ˜• Java

๋ชฉ๋ก ๋ณด๊ธฐ
32/40
post-thumbnail

๐Ÿ’โ€โ™€๏ธ ๋งต(Map)์ด๋ž€,
Collection ์ธํ„ฐํŽ˜์ด์Šค์™€๋Š” ๋‹ค๋ฅธ ์ €์žฅ ๋ฐฉ์‹์„ ๊ฐ€์ง€๋ฉฐ, key์™€ value๋ฅผ ํ•˜๋‚˜์˜ ์Œ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉ.

  • key๋Š” value๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•œ ์ด๋ฆ„ ์—ญํ• ์„ ํ•˜๋Š” ๊ฐ์ฒด
  • HashMap(๋™๊ธฐํ™”์ฒ˜๋ฆฌX), HashTable(๋™๊ธฐํ™”์ฒ˜๋ฆฌO), TreeMap ๋“ฑ์˜ ๋Œ€ํ‘œ์ ์ธ ํด๋ž˜์Šค๊ฐ€ ์žˆ์œผ๋ฉฐ, HashMap์„ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ
    (HashTable์€ ํ•˜์œ„ ํ˜ธํ™˜์„ ์œ„ํ•ด ๋‚จ๊ฒจ ๋†“์•˜๊ธฐ ๋•Œ๋ฌธ์— HashMap์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ)

๐Ÿ™‹โ€ ์ž ๊น ! ๋งต(Map)์˜ ํŠน์ง•์€ ๋ญ”๊ฐ€์š”?

  • ์š”์†Œ์˜ ์ €์žฅ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š์Œ
  • ํ‚ค๋Š” ์ค‘๋ณต ํ—ˆ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ, ํ‚ค๊ฐ€ ๋‹ค๋ฅด๋ฉด ์ค‘๋ณต ๊ฐ’์€ ์ €์žฅ ๊ฐ€๋Šฅ
    (key๋Š” ์ค‘๋ณต X, value๋Š” ์ค‘๋ณต O)
  • ํ‚ค๊ฐ€ ์ค‘๋ณต๋˜๋Š” ๊ฒฝ์šฐ, ๊ธฐ์กด์— ์žˆ๋Š” ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋ฎ์–ด ์”€

๐Ÿ“ Map ๊ณ„์—ด

1) HashMap
2) Properties

๐Ÿ’โ€โ™€๏ธ Map ๊ณ„์—ด์— ๋ชจ๋‘ ์ ์šฉ๋˜๋Š” ๋ฉ”์†Œ๋“œ


๐Ÿ‘€ HashMap

1) HashMap์˜ ํŠน์ง•

[1] HashMap ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ

	Map hmap = new HashMap();
[2] ์š”์†Œ ์ €์žฅ (put) 
>>> ํ‚ค, ๊ฐ’ ์Œ์œผ๋กœ ์ €์žฅํ•˜๋ฉฐ ๋‘˜ ๋‹ค ๋ฐ˜๋“œ์‹œ ๊ฐ์ฒด์—ฌ์•ผํ•จ
>>> ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์€ ์˜คํ†  ๋ฐ•์‹ฑ๋˜์–ด Wrapper ํด๋ž˜์Šค๋กœ ์ €์žฅ๋˜๊ณ  ์žˆ์Œ

	hmap.put("one", new Date()); >>> put(key๊ฐ’, value๊ฐ’)
	hmap.put(12,  "red apple");
	hmap.put(33, 123);			 >>>  int๊ฐ€ Integer๋กœ ์˜คํ†  ๋ฐ•์‹ฑ๋จ
[3] ์ €์žฅ ์ˆœ์„œ๋ฅผ ์œ ์ง€ X

	System.out.println("hmap : " + hmap);
    // hmap : {33=123, one=Thu Jan 05 12:26:29 KST 2023, 12=red apple} ์ถœ๋ ฅ
[4] ํ‚ค๋Š” ์ค‘๋ณต ์ €์žฅ๋˜์ง€ ์•Š์œผ๋ฉฐ value ๊ฐ’๋งŒ ๋ฎ์–ด์“ฐ๊ธฐ ๋จ

	hmap.put(12,  "yellow banana");
	System.out.println("hmap : " + hmap); 
    // "red apple"์ด "yellow banana"๋กœ ๋ณ€๊ฒฝ๋˜์–ด ์ €์žฅ๋จ
[5] ํ‚ค๊ฐ€ ๋‹ค๋ฅด๋ฉด ๊ฐ’ ๊ฐ์ฒด ์ €์žฅ์€ ์ค‘๋ณต์œผ๋กœ ๊ฐ€๋Šฅ

	hmap.put(11, "yellow banana");
	System.out.println("hmap : " + hmap); 
    // 12=yellow banana ์•ž์— ๊ทธ๋ƒฅ 11=yellow banana๊ฐ€ ์ถ”๊ฐ€๋จ
[6] ๊ฐ’ ๊ฐ์ฒด์˜ ๋‚ด์šฉ์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ (get)

	System.out.println("ํ‚ค 11์— ๋Œ€ํ•œ ๊ฐ์ฒด : " + hmap.get(11)); 
    // yellow banana ์ถœ๋ ฅ
[7] ํ‚ค ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์‚ญ์ œํ•  ๋•Œ (remove)

	hmap.remove(11);
	System.out.println("hmap : " + hmap); 
    // 11=yellow banana ์‚ญ์ œ๋จ
[8] ์ €์žฅ๋œ ๊ฐ์ฒด ์ˆ˜๋ฅผ ํ™•์ธํ•  ๋•Œ (size)
	System.out.println("hmap ์ €์žฅ๋œ ๊ฐ์ฒด ์ˆ˜ : " + hmap.size()); 
    // 3 ์ถœ๋ ฅ
		

2) ์ œ๋„ค๋ฆญ ์„ค์ •ํ•œ HashMap

[1] ์ œ๋„ค๋ฆญ ์„ค์ •ํ•œ HashMap ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ํ›„ ์ถœ๋ ฅ

>>> Map์˜ key ํƒ€์ž…์€ ๊ฐ€์žฅ ๋ณดํŽธ์ ์œผ๋กœ String ํƒ€์ž…์„ ์‚ฌ์šฉ

	Map<String, String> hmap2 = new HashMap<>();
		
	hmap2.put("one", "java");
	hmap2.put("two", "oracle");
	hmap2.put("three", "jdbc");
	hmap2.put("four", "html");
	hmap2.put("five", "css");
		
	System.out.println(hmap2);
    // {four=html, one=java, two=oracle, three=jdbc, five=css} ์ถœ๋ ฅ

[2] keySet()์„ ์ด์šฉํ•ด์„œ key์™€ value๊ฐ’ ์ถœ๋ ฅ

>>> keySet()์„ ์ด์šฉํ•ด์„œ ํ‚ค๋งŒ ๋”ฐ๋กœ Set์œผ๋กœ ๋งŒ๋“ค๊ณ , iterator๋กœ ํ‚ค์— ๋Œ€ํ•œ ๋ชฉ๋ก์„ ๋งŒ๋“ฌ. 
>>> ๋˜๋Š” ํ–ฅ์ƒ๋œ for๋ฌธ์„ ์‚ฌ์šฉ

	Set<String> keys = hmap2.keySet(); 
    // : ํ‚ค์˜ ๊ฐ’๋“ค๋งŒ์„ Set์œผ๋กœ ๋งŒ๋“ค๊ธฐ
	
>>> [1] Iterator ํ™œ์šฉ

	Iterator<String> keyIter = keys.iterator(); 
    >>> Set์„ ํ†ตํ•ด Iterator ์‚ฌ์šฉ ๊ฐ€๋Šฅ
		
	while(keyIter.hasNext()) {
		String key = keyIter.next();
		String value = hmap2.get(key);
		System.out.println(key + " = " + value);
	}
    
>>> [2] ํ–ฅ์ƒ๋œ for๋ฌธ ํ™œ์šฉ

	for(String key : keys) {
		String value = hmap2.get(key);
		System.out.println(key + " = " + value);
	}

๐Ÿ’ป Mini Console

four = html
one = java
two = oracle
three = jdbc
five = css
-------------
four = html
one = java
two = oracle
three = jdbc
five = css

[3] entrySet()์„ ์ด์šฉํ•ด์„œ key์™€ value๊ฐ’ ์ถœ๋ ฅ

>>> entrySet()์„ ์ด์šฉํ•ด์„œ Entry๋ฅผ Set์œผ๋กœ ๋งŒ๋“ค๊ณ  iterator๋กœ Entry์— ๋Œ€ํ•œ ๋ชฉ๋ก์„ ๋งŒ๋“ฌ.
>>> ๋˜๋Š” ํ–ฅ์ƒ๋œ for๋ฌธ์„ ์‚ฌ์šฉ

		Set<Map.Entry<String, String>> set = hmap2.entrySet();
		
>>> [1] Iterator ํ™œ์šฉ
		>>> Iteratorํ™” ์‹œ์ผœ๋„ Entry<String, String> ํ˜•ํƒœ ์œ ์ง€
        
		Iterator<Entry<String, String>> entryIter = set.iterator(); 
		while(entryIter.hasNext()) {
			Entry<String, String> entry = entryIter.next();
			System.out.println(entry.getKey() + " = " + entry.getValue());
		}
		
>>> [2] ํ–ฅ์ƒ๋œ for๋ฌธ ํ™œ์šฉ

		for(Entry<String, String> entry : set) {
			System.out.println(entry.getKey() + " = " + entry.getValue());
		}

๐Ÿ’ป Mini Console

four = html
one = java
two = oracle
three = jdbc
five = css
-------------
four = html
one = java
two = oracle
three = jdbc
five = css

[4] ์ €์žฅ๋œ value ๊ฐ์ฒด๋“ค๋งŒ values๋กœ Collection๋งŒ๋“ค์–ด ์ถœ๋ ฅ

	Collection<String> values = hmap2.values();
    
>>> Iterator ํ™œ์šฉ

	Iterator<String> valueIter = values.iterator();
	while(valueIter.hasNext()) {
		System.out.println(valueIter.next());
    }

๐Ÿ’ป Mini Console

html
java
oracle
jdbc
css

๐Ÿ‘€ Properties

๐Ÿ’โ€โ™€๏ธ Properties๋ž€,
ํ‚ค์™€ ๊ฐ’์„ String ํƒ€์ž…์œผ๋กœ ์ œํ•œํ•œ Map ์ปฌ๋ ‰์…˜

  • ์ฃผ๋กœ Properties๋Š” ํ”„๋กœํผํ‹ฐ(*.properties)ํŒŒ์ผ์„ ์ฝ์–ด ๋“ค์ผ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ

๐Ÿ’โ€โ™€๏ธ ํ”„๋กœํผํ‹ฐ(*.properties)ํŒŒ์ผ์ด๋ž€,
์˜ต์…˜์ •๋ณด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ์ •๋ณด, ๊ตญ์ œํ™”(๋‹ค๊ตญ์–ด)์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜์—ฌ ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ํ™œ์šฉํ•œ ๊ฒƒ

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์ฃผ๋กœ ๋ณ€๊ฒฝ์ด ์žฆ์€ ๋ฌธ์ž์—ด์„ ์ €์žฅํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—
    ์œ ์ง€๋ณด์ˆ˜๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์คŒ
  • ํ‚ค์™€ ๊ฐ’์ด โ€˜=โ€˜๊ธฐํ˜ธ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ISO 8859-1 ๋ฌธ์ž์…‹์œผ๋กœ ์ €์žฅ๋˜๊ณ , ํ•œ๊ธ€์€ ์œ ๋‹ˆ์ฝ”๋“œ(Unicode)๋กœ ๋ณ€ํ™˜๋˜์–ด ์ €์žฅ

๐Ÿ’โ€ Properties์˜ ์ฃผ์š” ๋ฉ”์†Œ๋“œ

1) Properties์˜ ํ™œ์šฉ

[1] ์„ค์ • ํŒŒ์ผ์˜ ๊ฐ’์„ ์ฝ์–ด์„œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ์šฉํ•  ๋•Œ ์‚ฌ์šฉ

Properties prop = new Properties();
		
prop.setProperty("driver", "oracle.jdbc,driver,OracleDriver");
prop.setProperty("url", "jdbc.oracle:thin:@127.0.0.1:1521:xe");
prop.setProperty("user", "student");
prop.setProperty("password", "student");
		
try {
	prop.store(new FileOutputStream("driver.dat"), "jdbc driver"); // ํŒŒ์ผ๋กœ ์ €์žฅ
	prop.store(new FileWriter("driver.txt"), "jdbc driver"); // ํŒŒ์ผ๋กœ ์ €์žฅ
	prop.storeToXML(new FileOutputStream("driver.Xml"), "jdbc driver"); // ํŒŒ์ผ๋กœ ์ €์žฅ
} catch (IOException e) {
	e.printStackTrace();
}

[2] ํŒŒ์ผ๋กœ๋ถ€ํ„ฐ ์ฝ์–ด์™€์„œ Properties์— ๊ธฐ๋ก ํ›„, Properties์˜ ๋ชจ๋“  ํ‚ค ๊ฐ’ ๋ชฉ๋ก์„ ๋Œ€์ƒ ์ŠคํŠธ๋ฆผ์— ๋‚ด๋ณด๋‚ด๊ธฐ

Properties prop2 = new Properties();
		
try {
	prop2.load(new FileInputStream("driver.dat")); // driver.dat ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
//	prop2.load(new FileReader("driver.txt")); // driver.txt ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
//	prop2.loadFromXML(new FileInputStream("driver.xml")); // driver.xml ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
>>> ๊ฐ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ๋Š” ๋ถˆ๋Ÿฌ์˜ฌ ํŒŒ์ผ์„ ์ œ์™ธํ•˜๊ณ  ์ฃผ์„์ฒ˜๋ฆฌ

	prop2.list(System.out);
			
	System.out.println(prop2.getProperty("driver"));
	System.out.println(prop2.getProperty("url"));
	System.out.println(prop2.getProperty("user"));
	System.out.println(prop2.getProperty("password"));
			
} catch (IOException e) {
	e.printStackTrace();
}

๐Ÿ“Œ Ref.


profile
Tiny little habits make me

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด