1. HashMap 선언 및 초기화
Copy Map < String , Integer > map = new HashMap <>();
2. HashMap 요소 추가 및 수정
Copy map . put ( "apple" , 1 ); // 키 "apple"과 값 1 추가
map . put ( "banana" , 2 ); // 키 "banana"와 값 2 추가
Copy map . put ( "apple" , 3 ); // 키 "apple"의 값을 3으로 수정
3. HashMap에서 값 검색 및 확인
Copy int value = map . get ( "apple" ); // 키 "apple"의 값을 반환
키가 존재하는지 확인 ( containsKey()
) :
Copy if ( map . containsKey ( "apple" )) {
System . out . println ( "apple exists" );
}
값이 존재하는지 확인 ( containsValue()
) :
Copy if ( map . containsValue ( 1 )) {
System . out . println ( "1 exists" );
}
4. HashMap 요소 삭제
Copy map . remove ( "apple" ); // 키 "apple"을 삭제
5. HashMap 순회
Copy for ( Map . Entry < String , Integer > entry : map . entrySet ()) {
System . out . println ( "Key: " + entry . getKey () + ", Value: " + entry . getValue ());
}
Copy for ( String key : map . keySet ()) {
System . out . println ( "Key: " + key);
}
Copy for ( int value : map . values ()) {
System . out . println ( "Value: " + value);
}
6. 기본값 설정
키가 없을 때 기본값을 반환 ( getOrDefault()
) :
Copy int value = map . getOrDefault ( "orange" , 0 ); // 키 "orange"가 없으면 기본값 0 반환
7. 값 업데이트
기존 값 업데이트 또는 기본값 설정 ( putIfAbsent()
) :
Copy map . putIfAbsent ( "orange" , 5 ); // "orange"가 없으면 값 5를 삽입
8. HashMap 요소 수 확인
Copy int size = map . size (); // HashMap의 요소 수 반환
9. 중복 요소 처리 (빈도 계산)
Copy Map < Character , Integer > frequencyMap = new HashMap <>();
String str = "hello" ;
for ( char c : str . toCharArray ()) {
frequencyMap . put (c , frequencyMap . getOrDefault (c , 0 ) + 1 );
}
for ( Map . Entry < Character , Integer > entry : frequencyMap . entrySet ()) {
System . out . println ( "Character: " + entry . getKey () + ", Frequency: " + entry . getValue ());
}
10. HashSet 선언 및 초기화
Copy Set < Integer > set = new HashSet <>();
11. HashSet 요소 추가 및 삭제
Copy set . add ( 1 ); // 1 추가
set . add ( 2 ); // 2 추가
Copy set . remove ( 1 ); // 1 삭제
12. HashSet에서 요소 검색
특정 값이 존재하는지 확인 ( contains()
) :
Copy if ( set . contains ( 2 )) {
System . out . println ( "2 is in the set" );
}
13. HashSet 순회
Copy for ( int num : set) {
System . out . println (num);
}
14. HashSet 크기 확인
Copy int size = set . size (); // Set의 크기 반환
15. 교집합, 합집합, 차집합
두 Set의 교집합 ( retainAll()
) :
Copy Set < Integer > set1 = new HashSet <>( Arrays . asList ( 1 , 2 , 3 ));
Set < Integer > set2 = new HashSet <>( Arrays . asList ( 2 , 3 , 4 ));
set1 . retainAll (set2); // set1과 set2의 교집합으로 set1 갱신 (결과: [2, 3])
Copy Set < Integer > union = new HashSet <>(set1);
union . addAll (set2); // set1과 set2의 합집합 생성
두 Set의 차집합 ( removeAll()
) :
Copy Set < Integer > difference = new HashSet <>(set1);
difference . removeAll (set2); // set1에서 set2의 요소를 제외한 차집합 생성
16. 중복 검사 (HashSet 활용)
Copy int [] arr = { 1 , 2 , 3 , 4 , 5 , 1 };
Set < Integer > set = new HashSet <>();
for ( int num : arr) {
if ( ! set . add (num)) {
System . out . println ( "Duplicate found: " + num);
}
}
17. 2개 이상의 맵을 동시에 업데이트
Copy Map < String , Integer > map1 = new HashMap <>();
Map < String , Integer > map2 = new HashMap <>();
map1 . put ( "apple" , 1 );
map1 . put ( "banana" , 2 );
map2 . put ( "apple" , 3 );
map2 . put ( "cherry" , 4 );
map2 . forEach ((key , value) -> map1 . merge (key , value , Integer :: sum)); // 같은 키가 존재할 경우 값을 더함
18. 순서가 중요한 경우 (LinkedHashMap 사용)
Copy Map < String , Integer > linkedMap = new LinkedHashMap <>();
linkedMap . put ( "apple" , 1 );
linkedMap . put ( "banana" , 2 );
linkedMap . put ( "cherry" , 3 );
for ( Map . Entry < String , Integer > entry : linkedMap . entrySet ()) {
System . out . println ( entry . getKey () + ": " + entry . getValue ());
}
19. TreeMap 사용 (정렬된 해시맵)
Copy Map < String , Integer > treeMap = new TreeMap <>();
treeMap . put ( "banana" , 2 );
treeMap . put ( "apple" , 1 );
treeMap . put ( "cherry" , 3 );
for ( Map . Entry < String , Integer > entry : treeMap . entrySet ()) {
System . out . println ( entry . getKey () + ": " + entry . getValue ());
}