出勤统计
分数 15
全屏浏览
切换布局
作者 大数据2021
单位 山东科技大学
某公司现需要统计员工出勤次数,具体要求如下:
输入样例:
Mark Tom
Ivor Mark
Ivor Mark
Jack
end
输入样例解释:
每行表示某天出勤的员工名单,以空格间隔。
end表示输入结束
输出样例:
Mark 3
Ivor 2
Tom 1
Jack 1
输出样例解释:
按出勤天数倒序输出,若出勤次数相同则按输入顺序输出(即先输入的先输出,样例中Tom比Jack先输入,因此先输出Tom)。每名员工占一行,格式为员工名+空格+出勤次数
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
import java.util.*;
/**
* @author chen
*/
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Map<String, Integer> attendance = new LinkedHashMap<>();//这个Map可以保证输入的顺序
while (sc.hasNextLine()) {
String input = sc.nextLine();
if (input.equals("end")) {
break;
}
String[] employees = input.split("\\s+");
for (String employee : employees) {
if (attendance.containsKey(employee)) {
attendance.put(employee, attendance.get(employee) + 1);
} else {
attendance.put(employee, 1);
}
}
}
sc.close();
// 按出勤次数倒序排序
//Map<String, Integer> sorted = new LinkedHashMap<>();
// 创建一个 ArrayList,用于存储原始 Map 的键值对
List<Map.Entry<String, Integer>> list = new ArrayList<>(attendance.entrySet());
// 使用自定义比较器按值降序排序
/* Comparator<Map.Entry<String, Integer>> comparator = new Comparator<>() {
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
return o2.getValue().compareTo(o1.getValue());
}
};*/
list.sort(new customComparator());
// 将排序后的键值对添加到新的 LinkedHashMap 中
/* for (Map.Entry<String, Integer> entry : list) {
sortedMap.put(entry.getKey(), entry.getValue());
}
// 打印结果
for (Map.Entry<String, Integer> entry : sorted.entrySet()) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
*/
// 注意下面的代码修改了,原来的代码在此行上面
for (Map.Entry<String, Integer> entry : list) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
}
class customComparator implements Comparator {
@Override
public int compare(Object o1, Object o2) {
Map.Entry<String, Integer> m1 = (Map.Entry<String, Integer>) o1;
Map.Entry<String, Integer> m2 = (Map.Entry<String, Integer>) o2;
return m2.getValue().compareTo(m1.getValue());
}
}
标签:Map,39,attendance,Java,出勤,PTA,getValue,Entry,entry
From: https://blog.csdn.net/2301_79272475/article/details/143466408