파이썬을 공부할 때 자료구조는 비교적 앞에 나왔는데, 자바에서는 (물론 배열 개념은 나왔지만) 이제 등장했다.
아마도 자료구조보다는 객체프로그래밍이 더 중요한 개념이라 그런가보다.
간단한 용어/개념 정리는 아래 포스팅을 참고 바란다.
2023.08.06 - [스터디/혼공학습단 - 자바] - [혼공학습단] 자바의 컬렉션 프레임워크 들어가기 앞서...
2023.08.07 - [스터디/혼공학습단 - 자바] - [혼공학습단] 파이썬과 비교해보는 자바의 컬렉션 프레임워크
선택미션
주차 | 진도 | 선택 미션 |
5주차 | Chapter 13 | p.573 [직접 해보는 손코딩] 코딩 과정 및 실행결과 캡처하기 |
p.573 [직접 해보는 손코딩] 코딩 과정 및 실행결과 캡처하기
손 코딩
출력 결과
출력 결과 해석하기
각각의 print 메서드의 결과값을 살펴보자.
1. 중복으로 키를 넣고 값을 출력하기
map.put("신용권", 85);
map.put("홍길동", 90);
map.put("동장군", 80);
map.put("홍길동", 95); // "홍길동" 키로 이미 값을 저장한 상태에서 새로운 값으로 덮어씀
System.out.println("총 Entry 수: " + map.size()); // 현재 저장된 Entry(키-값 쌍)의 수를 출력
System.out.println("\t홍길동 : " + map.get("홍길동")); // "홍길동" 키에 해당하는 값 출력
중복 키는 새로운 값으로 덮어쓰고 마지막에 저장된 키의 값으로 출력되는 것을 알 수 있다.
따라서 총 Entry 수는 3이고, 홍길동 : 95 값이 출력된다.
2. Set으로 저장 후 출력하기
Set<String> keySet = map.keySet(); // 모든 키들을 Set에 저장
Iterator<String> keyIterator = keySet.iterator(); // Iterator를 이용하여 키를 순회
while(keyIterator.hasNext()) {
String key = keyIterator.next(); // 다음 키를 가져옴
Integer value = map.get(key); // 해당 키에 대한 값을 가져옴
System.out.println("\t" + key + " : " + value); // 키와 값 출력
}
System.out.println();
모든 키를 Set으로 저장하여 반복문으로 키와 값을 출력한다.
이 때 출력 순서는 입력한 순서가 아닐 수 있다. HashMap에서는 자바에서 어떻게 저장되고 관리되는 지에 따라 결정된다고 한다.(이 부분이 명쾌하게 이해가 안가는 듯)
참고로 keySet() 메서드는 맵의 모든 키를 가져와서 'Set' 형태로 반환한다.
3. 객체 삭제 후 출력하기
// 객체 삭제
map.remove("홍길동"); // "홍길동" 키에 해당하는 Entry(키-값 쌍) 삭제
System.out.println("총 Entry 수: " + map.size()); // 현재 저장된 Entry(키-값 쌍)의 수 출력
// 객체를 하나씩 처리
Set<Map.Entry<String, Integer>> entrySet = map.entrySet(); // 모든 Entry(키-값 쌍)들을 Set에 저장
Iterator<Map.Entry<String, Integer>> entryIterator = entrySet.iterator(); // Iterator를 이용하여 Entry를 순회
while(entryIterator.hasNext()) {
Map.Entry<String, Integer> entry = entryIterator.next(); // 다음 Entry(키-값 쌍)를 가져옴
String key = entry.getKey(); // Entry의 키를 가져옴
Integer value = entry.getValue(); // Entry의 값(값)을 가져옴
System.out.println("\t" + key + " : " + value); // 키와 값 출력
}
System.out.println();
'홍길동' 키를 삭제하고 총 Entry수와 모든 키와 값을 출력한다.
따라서 총 Entry 수는 2이고, 신용권 : 85, 동장군: 80 값들이 출력된다.
마찬가지로 여기서 쓰는 entrySet은 맵의 모든 엔트리(키-값 쌍)들을 가져와 'Set' 형태로 반환한다.
4. 전체 객체 삭제
// 객체 전체 삭제
map.clear(); // 모든 Entry(키-값 쌍)들을 삭제
System.out.println("총 Entry 수: " + map.size()); // 현재 저장된 Entry(키-값 쌍)의 수 출력
clear()를 통해 맵의 모든 객체를 삭제하고 총 entry 값을 출력해본다.
따라서 총 Entry 수는 0으로 기대했던 출력결과를 얻을 수 있다.
** 사실과 다른 내용이 있을 수 있습니다. 언제든지 피드백 부탁드립니다!
'스터디 > 혼공학습단 10기 - 자바 & 머신러닝' 카테고리의 다른 글
[혼공학습단] 차원의 저주를 풀기 위한 주성분 분석(PCA) (0) | 2023.08.12 |
---|---|
[혼공학습단] k-평균 알고리즘의 작동방식 (0) | 2023.08.12 |
[혼공학습단] 파이썬과 비교해보는 자바의 컬렉션 프레임워크 (0) | 2023.08.07 |
[혼공학습단] 자바의 컬렉션 프레임워크 들어가기 앞서... (0) | 2023.08.06 |
[혼공학습단] Java - 작업 스레드(Thread) 생성의 2가지 방법 (0) | 2023.07.30 |
댓글