①main関数のなかでwhile文を回しており、
その際に、
単語がMapのキーに含まれていない場合、以下をMapに格納する。
キー word
値 1
という処理がありますが、これは何をしているのかが理解できておりません。
map.get(word)がmapにwordが含まれていないとできないので、map.get(word)を0にしたときの動作を条件訳しています。1というのはwordが一個含まれているという意味です。
if (map.containsKey(word)) {
/*
要素を取り出すためにgetメソッドを使用する。 get(Object key)
要素を格納するためにputメソッドを使用する。 put(K key, V value)
*/
int count = map.get(word) + 1;
map.put(word, count);
} else {
map.put(word, 1);
}
②最後の行で
String format = "%-" + maxLengthOfSpelling + "s= %3d";
とformatに格納して最後に表示されていますが、
"%-"と"s= %3d"が理解できておりません。
自分の考えとして、C言語の際に%s(文字列),%d整数みたいな表現のなごりだと考えておりますが、C言語の際に必要であった("%s",引数名)がなく混乱しております。
公式ドキュメントのprintfの部分を確認するのが良いと思います。CとJavaでは書き方が微妙に違います。
https://docs.oracle.com/javase/jp/8/docs/api/java/io/PrintStream.html
③このように出現回数の多い順に並び変えられてしまいます。
比較関数
Collections.sort(list, (o1, o2) -> {
return - map.get(o1) + map.get(o2);
});
の符号を逆にしましょう。
Collections.sort(list, (o1, o2) -> {
return map.get(o1) - map.get(o2);
});
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。