7-5 sdut-String+array(LinkedHashMap) 读中国载人航天史,汇航天员数量,向航天员致敬(1) --笔记篇

题目

1986年,中国实施“863”计划,航天技术列入其中。以载人飞船开始起步,最终建成我国的空间站。
1992年9月21日,中国实施载人航天工程,并确定了三步走的发展战略:第一步,发射载人飞船,建成初步配套的试验性载人飞船工程。第二步,突破载人飞船和空间飞行器的交会对接技术,利用载人飞船技术改装、发射一个空间实验室。第三步,建造载人空间站。

在长期的奋斗中,我国航天工作者不仅创造了非凡的业绩,而且铸就了特别能吃苦、特别能战斗、特别能攻关、特别能奉献的载人航天精神。载人航天精神,是“两弹一星”精神在新时期的发扬光大,是我们伟大民族精神的生动体现,永远值得全党、全军和全国人民学习。

截至2021年4月,历任航天英雄名字如下:
杨利伟(神舟五号)
费俊龙、聂海胜(神舟六号)
翟志刚、景海鹏、刘伯明(神舟七号)
景海鹏、刘旺、刘洋(神舟九号)
聂海胜、张晓光、王亚平(神舟十号)
景海鹏、陈东(神舟十一号)
会编程的小伙伴们,请以他们出征太空的先后顺序,统计一下航天英雄们出征太空的次数,以实际行动向航天员们致敬!

输入格式:
每次航天飞船的编号为一行读入数据,分别读入每次飞上太空的航天英雄的姓名,名字中间有一个空格分隔。
最后一行为“end“,表示输入结束。

提示:目前,中国航天员的数量小于20。
输出格式:
以出征太空的先后顺序,统计航天英雄们出征太空的次数。
每位航天员占一行,航天员姓名与出征次数中间有一个空格。
输入样例:
杨利伟
费俊龙 聂海胜
翟志刚 景海鹏 刘伯明
景海鹏 刘旺 刘洋
聂海胜 张晓光 王亚平
景海鹏 陈东
end
输出样例:
杨利伟 1
费俊龙 1
聂海胜 2
翟志刚 1
景海鹏 3
刘伯明 1
刘旺 1
刘洋 1
张晓光 1
王亚平 1
陈东 1

代码

import java.util.*;
public class Main{
    public static void main(String args[]) {
        Scanner in = new Scanner(System.in);
        LinkedHashMap<String,Integer> p=new LinkedHashMap<>();
        while (in.hasNext()){
            String n=in.next();
            if (n.equals("end")) break;
            if (p.containsKey(n)) p.put(n,p.get(n)+1);
            else p.put(n,1);
        }
        p.forEach((key,value)->System.out.println(key+" "+value));
    }
}

笔记

  1. HashMap 在 Java 中并不保证元素的顺序。它不像 ArrayList 或 LinkedList 那样,元素的顺序是插入的顺序。HashMap 的元素顺序是随机的,并且在每次运行程序时可能都会改变。
    如果你需要保持元素的插入顺序,你应该使用 LinkedHashMap。LinkedHashMap 是 HashMap 的一个子类,它保持了元素的插入顺序。
    如果你需要保持元素的自然顺序(例如,按字母顺序排序),你应该使用 TreeMap。TreeMap 是 Map 的一个实现,它保持了元素的自然顺序。
    所以,如果你希望保持元素的插入顺序,你可以使用 LinkedHashMap,如果你希望保持元素的自然顺序,你可以使用 TreeMap。
    2.forEach快捷写法

你可能感兴趣的:(Java课PTA习题专栏,笔记,java,算法)