JAVAアルゴリズム-クラス会場HashMap


説明:
班長候補はA B C D E候補だ
投票用紙にはクラスの学生が自分で選んだ候補者の記号(アルファベット)が書かれていて、先生がその記号を発表しています.
先生の発言が終わったら、どの記号を印刷した候補者が班長になるプログラムを作成してください.
入力
1行目はクラス生徒数N(5<=N<=50)である.
2行目では、各候補者がN票に書いた記号が、あなたが発表した順序で文字列として入力されます.
しゅつりょく
クラス会長に選ばれた記号を出力します.
入力例
15
BACBACCACCBDEDE
サンプル出力
C
正解

import java.util.*;
class Main {	
	public char solution(int n, String s){
		char answer=' ';
		HashMap<Character, Integer> map=new HashMap<>();
		for(char x : s.toCharArray()){
			map.put(x, map.getOrDefault(x, 0)+1); 
		}
		//System.out.println(map.containsKey('F'));
		//System.out.println(map.size());
		//System.out.println(map.remove('C'));
		
		int max=Integer.MIN_VALUE;
		for(char key : map.keySet()){
			//System.out.println(key+" "+map.get(key));
			if(map.get(key)>max){
				max=map.get(key);
				answer=key;
			}
		}
		return answer;
	}

	public static void main(String[] args){
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		int n=kb.nextInt();
		String str=kb.next();
		System.out.println(T.solution(n, str));
	}
}
map.keySet():keySet()メソッドは、key値が必要な場合にのみ使用します.map.getOrDefault(x, 0):検索キーが存在する場合は、検索キーの値を返し、存在しない場合は、デフォルト値0を返します.map.getOrDefault(x, 0)+1は、mapの値において1から逆数を開始するために設計されている.