๐โโ๏ธ ๋งต(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 ๊ณ์ด์ ๋ชจ๋ ์ ์ฉ๋๋ ๋ฉ์๋
[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 ์ถ๋ ฅ
>>> 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} ์ถ๋ ฅ
>>> 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
>>> 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
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๋,
ํค์ ๊ฐ์ String ํ์ ์ผ๋ก ์ ํํ Map ์ปฌ๋ ์
- ์ฃผ๋ก Properties๋ ํ๋กํผํฐ(*.properties)ํ์ผ์ ์ฝ์ด ๋ค์ผ ๋ ์ฃผ๋ก ์ฌ์ฉ
๐โโ๏ธ ํ๋กํผํฐ(*.properties)ํ์ผ์ด๋,
์ต์ ์ ๋ณด, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ๋ณด, ๊ตญ์ ํ(๋ค๊ตญ์ด)์ ๋ณด๋ฅผ ๊ธฐ๋กํ์ฌ ํ ์คํธ ํ์ผ๋ก ํ์ฉํ ๊ฒ
- ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฃผ๋ก ๋ณ๊ฒฝ์ด ์ฆ์ ๋ฌธ์์ด์ ์ ์ฅํ์ฌ ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์
์ ์ง๋ณด์๋ฅผ ํธ๋ฆฌํ๊ฒ ๋ง๋ค์ด ์ค- ํค์ ๊ฐ์ด โ=โ๊ธฐํธ๋ก ์ฐ๊ฒฐ๋์ด ์๋ ํ ์คํธ ํ์ผ๋ก ISO 8859-1 ๋ฌธ์์ ์ผ๋ก ์ ์ฅ๋๊ณ , ํ๊ธ์ ์ ๋์ฝ๋(Unicode)๋ก ๋ณํ๋์ด ์ ์ฅ
๐โ Properties์ ์ฃผ์ ๋ฉ์๋
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();
}
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.