某公司现需要统计员工出勤次数,具体要求如下: 输入样例: Mark Tom Ivor Mark Ivor Mark Jack end 输入样例解释: 每行表示某天出勤的员工名单,以空格间隔。 end表示输入结束 输出样例: Mark 3 Ivor 2 Tom 1 Jack 1 输出样例解释: 按出勤天数倒序输出,若出勤次数相同则按输入顺序输出(即先输入的先输出,样例中Tom比Jack先输入,因此先输出Tom)。每名员工占一行,格式为员工名+空格+出勤次数
时间: 2024-03-21 07:38:40 浏览: 9
好的,这个问题可以使用 `HashMap` 来解决。我们可以将每个员工的出勤次数存储在 `HashMap` 中,然后按照出勤次数进行排序并输出。我将会为您提供完整的 Java 代码实现。
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Map<String, Integer> map = new HashMap<>();
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
if (line.equals("end")) {
break;
}
String[] employees = line.split(" ");
for (String employee : employees) {
map.put(employee, map.getOrDefault(employee, 0) + 1);
}
}
List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
Collections.sort(list, (e1, e2) -> {
if (e1.getValue() != e2.getValue()) {
return e2.getValue() - e1.getValue();
} else {
return Integer.valueOf(e1.getKey().split("-")[1]) - Integer.valueOf(e2.getKey().split("-")[1]);
}
});
for (Map.Entry<String, Integer> entry : list) {
System.out.println(entry.getKey() + " " + entry.getValue());
}
}
}
```
上述代码中,我们首先使用 `HashMap` 对每个员工的出勤次数进行存储。在存储的过程中,我们将输入的每行字符串按照空格进行拆分,然后遍历每个员工进行出勤次数的统计。
接下来,我们将 `HashMap` 中的数据转化为一个 `List`,并使用 `Collections.sort()` 方法对 `List` 中的数据进行排序。排序的规则是,按照出勤次数进行降序排序,如果出勤次数相同则按照输入顺序排序(先输入的先输出)。
最后,我们遍历排序后的 `List`,按照题目要求输出每个员工的出勤次数。