HashMap은 Map을 구현했으므로 앞에서 살펴본 Map의 특징인, 키(key)와 값(value)을 묶어서 하나의 데이터(entry)로 저장한다는 특징 이 있다. 그리고 해싱(hashing) 을 사용하기 때문에 많은 양의 데이터를 검색하는데 있어 뛰어난 성능을 보인다.
HashMap 은 키와 값을 각각 Object타입으로 저장한다. 즉 (Object, Obejct) 의 형태로 저장하기 때문에 어떠한 객체도 저장할 수 있지만 키는 주로 String을 대문자 또는 소문자로 통일해서 사용하곤 한다.
그리고 키는 저장된 값을 찾는데 사용되는 것이기 때문에 컬렉션 내에서 유일(unique)해야한다. 즉, HashMap 에 저장된 데이터를 하나의 키로 검색했을 대 결과가 단 하나이어야 함을 뜻한다.
키(key) : 컬렉션 내의 키(key) 중에서 유일해야 한다.
값(valuje) : 키(key)와 달리 데이터의 중복을 허용한다.
// HashMap 생성
HashMap<키,값> map = new HashMap<>();
// 데이터 넣기
map.put('A',1);
map.put('B',2);
map.put('C',3);
// 데이터 제거
map.remove('A');
// 데이터 출력
for(char c : map.keySet()){
System.out.println(c);
}
// 데이터 있는지 확인 Boolean
System.out.println(map.containsKey('A')); // true
System.out.println(map.containsValue(3)); // true
// key의 갯수
System.out.println(map.size()); // 3
학급 회장을 뽑는데 후보로 기호 A, B, C, D, E 후보가 등록을 했습니다.
투표용지에는 반 학생들이 자기가 선택한 후보의 기호(알파벳)가 쓰여져 있으며 선생님은 그 기호를 발표하고 있습니다.
선생님의 발표가 끝난 후 어떤 기호의 후보가 학급 회장이 되었는지 출력하는 프로그램을 작성하세요.
반드시 한 명의 학급회장이 선출되도록 투표결과가 나왔다고 가정합니다.
첫 줄에는 반 학생수 N(5<=N<=50)이 주어집니다.
두 번째 줄에 N개의 투표용지에 쓰여져 있던 각 후보의 기호가 선생님이 발표한 순서대로 문자열로 입력됩니다.
| 제목1 | 제목2 |
|---|---|
| 15 | C |
| BACBACCACCBDEDE |
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String s = sc.next();
HashMap<Character, Integer> map = new HashMap<>();
for(char c : s.toCharArray()){
map.put(c,map.getOrDefault(c,0)+1);
}
int max = 0;
char answer = ' ';
for(char key : map.keySet()){
if(max < map.get(key)){
max = map.get(key);
answer = key;
}
}
System.out.println(answer);