ν”„λ‘œκ·Έλž˜λ° 곡뢀/Java

[18일차] HashMap, HashSet

λŒ€μž₯μΏ΅μ•Ό 2023. 3. 5. 14:48

HashMap

- μš”μ†Œ μ ‘κ·Ό < ν‚€(key) μ‚¬μš©
- list["ν–‡λ‹˜"], list["λ‹¬λ‹˜"], list["λ³„λ‹˜"]
- μˆœμ„œκ°€ μ—†λŠ” λ°μ΄ν„° μ§‘ν•© > λ°©λ²ˆν˜Έκ°€ μ—†μŒ > μˆœμ„œλ₯Ό μ•Œ μˆ˜ μ—†λ‹€.
ex) ν–‡λ‹˜λ°˜, λ‹¬λ‹˜λ°˜, λ³„λ‹˜λ°˜
- λ°©μ΄λ¦„ > μ˜λ―Έ λͺ…ν™•
- λ°©μ΄λ¦„ > λ£¨ν”„ λΆˆκ°€λŠ₯ 
- μš”μ†Œ > ν‚€(key) + κ°’(value)
- ν‚€(key)λŠ” μœ μΌν•˜λ‹€.
- κ°’(value)은 μ€‘볡이 κ°€λŠ₯ν•˜λ‹€. > ν‚€κ°€ μœ μΌν•΄μ„œ..

 

HashMap의 μ‚¬μš©

//HashMap μ‚¬μš©λ²•
HashMap<String, String> map = new HashMap<String, String>();

//1. μš”μ†Œ μΆ”κ°€ν•˜κΈ°
map.put("red", "λΉ¨κ°•");
map.put("yellow", "λ…Έλž‘");
map.put("blue", "νŒŒλž‘");

//2. μš”μ†Œ 개수
System.out.println(map.size());

//3. μš”μ†Œ 읽기
System.out.println(map.get("red"));
System.out.println(map.get("yellow"));
System.out.println(map.get("blue"));

//4. μš”μ†Œ μˆ˜μ •(λ”°λ‘œ μ—†μŒ)
//- ν‚€(key)λŠ” μœ μΌν•˜λ‹€.
map.put("yellow", "μƒ›λ…Έλž‘"); //μΆ”κ°€(X), μˆ˜μ •(O)
System.out.println(map.get("yellow"));

//5. μš”μ†Œ 검색
//- contains
System.out.println(map.containsKey("yellow"));
System.out.println(map.containsValue("λ…Έλž‘"));


//6. μš”μ†Œ μ‚­μ œ 
map.remove("yellow");
System.out.println(map.size());
System.out.println(map.get("yellow")); //μ—†λŠ” key μš”μ²­μ‹œ null λ°˜ν™˜ (μ—λŸ¬X)

//7. μ΄ˆκΈ°ν™”
map.clear();
System.out.println(map.size());

map.put("red", "λΉ¨κ°•");
map.put("yellow", "λ…Έλž‘");
map.put("blue", "νŒŒλž‘");

//{red=λΉ¨κ°•, blue=νŒŒλž‘, yellow=λ…Έλž‘}
System.out.println(map); //toString() μ˜€λ²„λΌμ΄λ”© > 덀프


ArrayList<String> list = new ArrayList<String>();

list.add("λΉ¨κ°•");
list.add("λ…Έλž‘");
list.add("νŒŒλž‘");

//[λΉ¨κ°•, λ…Έλž‘, νŒŒλž‘]
System.out.println(list);


map.clear();
System.out.println(map.isEmpty());

 

 

 


Set 계열
- μˆœμ„œκ°€ μ—†λŠ” μ§‘ν•©
- μ‹λ³„μžκ°€ μ—†λ‹€.(방번호X, λ°©μ΄λ¦„X) > λ°©κ³Ό λ°©μ„ κ΅¬λΆ„ν•  μˆ˜ μ—†λ‹€.
- λ°μ΄ν„° μ€‘볡을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€.

 

HashSet의 μ‚¬μš©

//1. μš”μ†Œ μΆ”κ°€ν•˜κΈ°
set.add("사과");
set.add("λ”ΈκΈ°");
set.add("λ°”λ‚˜λ‚˜");

//2. μš”μ†Œ 개수
System.out.println(set.size());

//3. 덀프
System.out.println(set);

//4. μ€‘λ³΅λœ κ°’ μΆ”κ°€ν•˜κΈ°
boolean result = set.add("사과"); //μ•ˆλ“€μ–΄κ°(기쑴에 사과가 μžˆμ–΄μ„œ..)
System.out.println(result);

System.out.println(set);

//5. 검색
System.out.println(set.contains("사과"));

//6. μ‚­μ œ
set.remove("사과");
System.out.println(set);

//7. μš”μ†Œ 읽기 > only 탐색 ν†΅ν•΄μ„œ
for (String item : set) { //forλ¬Έ μ‹œμž‘ν• λ•Œ μ΄ν„°λ ˆμ΄ν„°λ₯Ό μƒμ„±ν•œλ‹€.
	System.out.println(item);
}
System.out.println();
System.out.println();

 

μ΄ν„°λ ˆμ΄ν„°(Iterator)

//μœ„μ˜ ν–₯μƒλœ for문의 탐색 > 원본

//μ΄ν„°λ ˆμ΄ν„° > 데이터 집합을 νƒμƒ‰ν•˜λŠ” 도ꡬ > 탐색기
//***** λκΉŒμ§€ 읽고 λ‚˜λ©΄ λ‹€μ‹œ 읽을 수 μ—†λ‹€.
Iterator<String> iter = set.iterator();

while (iter.hasNext()) {
	System.out.println(iter.next());
}

iter = set.iterator(); //μ΄ν„°λ ˆμ΄ν„°λ₯Ό λ‹€μ‹œ μƒμ„±ν•˜λ©΄ ν™”μ‚΄ν‘œλŠ” μ²˜μŒμ—μ„œ λ‹€μ‹œ μ‹œμž‘

System.out.println(iter.next());

System.out.println(iter.hasNext());