首页 > 编程语言 >Java复习39(PTA)

Java复习39(PTA)

时间:2024-11-08 14:46:36浏览次数:5  
标签:Map 39 attendance Java 出勤 PTA getValue Entry entry

出勤统计

分数 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

相关文章

  • JAVA同城服务上门家政服务家政派单系统源码微信小程序+微信公众号+APP+H5
    JAVA同城服务上门家政服务家政派单系统源码,是一款专为家政服务行业设计的全方位解决方案,它深度整合了微信小程序、微信公众号、APP以及H5四大主流平台,为用户和服务商之间搭建了一座高效、便捷的沟通桥梁。在功能性方面,该系统源码提供了全面的家政服务项目分类,包括日常保洁、......
  • JAVA全民到家同城服务按摩养生系统源码支持公众号+H5
    JAVA全民到家同城服务预约按摩养生系统源码,深度整合了同城按摩养生行业的优质服务资源,通过公众号与H5端的全面支持,为用户提供了一个功能强大、实用便捷的健康服务平台。在功能性方面,该系统源码不仅提供了丰富的按摩养生服务项目,如中式按摩、泰式按摩、足疗养生等,还允许用户根......
  • Java 面试用什么项目?全是商场秒杀 RPC,我吐了
    看了几百份简历,真的超过90%的小伙伴的项目是商城、RPC、秒杀、论坛、外卖、点评等等烂大街的项目,人人都知道这些项目烂大街了,但大部分同学还是得硬着头皮做,没办法,网络上能找到的、教程比较完善的就这些项目了,做的话好歹有个项目,不做那就真能写学校做的垃圾学生管理系统了。我深......
  • javascript中的this
    在JavaScript中,this关键字的值取决于它被使用的上下文。它并不像其他编程语言中的this总是指向对象的实例,而是可能指向不同的对象。以下是几种常见的this的用法及其指向的内容:全局上下文在全局范围(即没有在任何函数或对象内)中,this指向全局对象。在浏览器中,这通常是window对象。......
  • Java 重新认识String类
    在Java中,以下代码的输出是什么?为什么?Strings1="Hello";Strings2="Hello";Strings3=newString("Hello");System.out.println(s1==s2);//输出:trueSystem.out.println(s1==s3);//输出:false解析String类在Java中,String类是一个非常特殊且重要的类,用于表......
  • java计算机毕业设计电子购物商城(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着互联网技术的迅猛发展和广泛普及,人们的生活方式发生了巨大的改变。在商业领域,电子购物逐渐成为主流的消费模式。近年来,电子商务市场规模不断......
  • java计算机毕业设计吃到撑零售微商城(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着互联网技术的飞速发展,电子商务已经深入到人们生活的各个方面。在零售行业,传统的实体店销售模式面临着诸多挑战,如地域限制、营业时间限制等。......
  • 代码随想录算法训练营第三十九天|Day39 动态规划
    198.打家劫舍视频讲解:https://www.bilibili.com/video/BV1Te411N7SXhttps://programmercarl.com/0198.%E6%89%93%E5%AE%B6%E5%8A%AB%E8%88%8D.html思路#definemax(a,b)((a)>(b)?(a):(b))introb(int*nums,intnumsSize){if(numsSize==0){re......
  • 深入理解Java虚拟机 --- 运行时数据区
    程序计数器每个线程都有自己的程序计数器(线程私有),它可以看作是当前线程所执行的字节码的行号指示器。在Java虚拟机的概念模型里,字节码解释器工作时就是通过改变计数器的值来选取下一条需要执行的字节码指令。为什么程序计数器线程私有主要是为了保证进程切换之后能够恢复到......
  • 深入理解Java虚拟机 --- 垃圾标记/收集算法
    在开始本章之前,我们得了解一个概念,那就是我们怎么知道这个对象是"垃圾"?所以如何定义垃圾就成为我们第一个需要探讨的重要的点之一。垃圾标记算法常见的垃圾标记算法有:引用计数算法和可达性分析算法。引用计数算法实现思路每个对象去额外存储一个引用计数器,这个计数器统计了对......