7-5 找到出勤最多的人-hebust (25 分)
根据教师的花名册,找到出勤最多的人。
输入格式:
出勤记录单行给出,数据直接使用空格分割。
输出格式:
单行输出(若有多人,人名直接使用空格分割,结尾处没有空格)。
输入样例:
在这里给出一组输入。例如:
zs ls ww ml zs ls ml zs ww
输出样例:
在这里给出相应的输出。例如:
zs
代码
import java.util.*;
public class Main {
private static Object getKey(HashMap<String, Integer> hmap, Integer value) {
LinkedList<String> key = new LinkedList<>();
for (HashMap.Entry<String, Integer> entry : hmap.entrySet()) {
if (value.equals(entry.getValue())) {
key.add(entry.getKey());
}
}
return key;
}
private static Object getMaxValue(Map<String, Integer> map) {
if (map.size() == 0)
return null;
Collection<Integer> c = map.values();
Object[] obj = c.toArray();
Arrays.sort(obj);
return obj[obj.length - 1];
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
HashMap<String, Integer> hmap = new HashMap<String, Integer>();
String str = scan.nextLine();
String[] name = str.split(" ");
for (String s : name) {
hmap.put(s, 0);
}
for (String s : name) {
int value = hmap.get(s) + 1;
hmap.put(s, value);
}
// System.out.println(hmap);
int max_num = (int) getMaxValue(hmap);
LinkedList<String> skey = (LinkedList<String>) getKey(hmap, max_num);
for (int i = 0; i < skey.size(); i++) {
if (i == 0) {
System.out.print(skey.get(i));
} else {
System.out.print(" " + skey.get(i));
}
}
}
}