Java集合框架

目录

​编辑

6-1 学生对象排序1

函数接口定义:

裁判测试程序样例:

输入样例:

输出样例:

代码实现 

6-2 学生对象排序2

函数接口定义:

裁判测试程序样例:

输入样例:

输出样例:

7-1 sdut-Collection-C~K的班级(I)

输入格式:

输出格式:

输入样例:

输出样例:

7-2 sdut-Collection-sort--C~K的班级(II)

输入格式:

输出格式:

输入样例:

输出样例:

7-3 sdut-Map-Sort--C~K的班级(III)

输入格式:

输出格式:

输入样例:

输出样例:

7-4 sdut-LinkedHashMap--C~K的班级(IV)

输入格式:

输出格式:

输入样例:

输出样例:

7-8 sdut-Collection(Map) 读中国载人航天史,汇航天员数量,向航天员致敬(2)

输入格式:

输出格式:

输入样例:

输出样例:

代码实现 

7-9 sdut-Collection(List) 读中国载人航天史,汇航天员数量,向航天员致敬(3)

输入格式:

输出格式:

输入样例:

输出样例:

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

输入格式:

输出格式:

输入样例:

输出样例:


目录

​编辑

6-1 学生对象排序1

函数接口定义:

裁判测试程序样例:

输入样例:

输出样例:

代码实现 

6-2 学生对象排序2

函数接口定义:

裁判测试程序样例:

输入样例:

输出样例:

7-1 sdut-Collection-C~K的班级(I)

输入格式:

输出格式:

输入样例:

输出样例:

7-2 sdut-Collection-sort--C~K的班级(II)

输入格式:

输出格式:

输入样例:

输出样例:

7-3 sdut-Map-Sort--C~K的班级(III)

输入格式:

输出格式:

输入样例:

输出样例:

7-4 sdut-LinkedHashMap--C~K的班级(IV)

输入格式:

输出格式:

输入样例:

输出样例:

7-8 sdut-Collection(Map) 读中国载人航天史,汇航天员数量,向航天员致敬(2)

输入格式:

输出格式:

输入样例:

输出样例:

代码实现 

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

输入格式:

输出格式:

输入样例:

输出样例:


6-1 学生对象排序1

分数 10

全屏浏览题目

作者 周雪芹

单位 山东理工大学

设计学生类Student,内含如下属性:学号(int id)、姓名(String name)、数学成绩(int math)、英语成绩(int english)、计算机成绩(int cs)。
创建若干个学生类的对象,将其加入List集合中。将学生对象按照如下规则输出:
(1)数学成绩从小到大;(2)若数学成绩相同,按照英语成绩从大到小;(3)若数学、英语成绩都相同,按照计算机成绩从小到到大;(4)若三门课程成绩都相同,按照学号从小到大顺序。

函数接口定义:

//请按如下提示完善Student类的设计
//内含如下属性:学号(int id)、姓名(String name)、数学成绩(int math)、英语成绩(int english)、计算机成绩(int cs)。
class Student implements Comparable<Student> {
    int id;
    String name;
    int math;
    int english;
    int cs;

   //补充代码段1

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", math=" + math +
                ", english=" + english +
                ", cs=" + cs +
                '}';
    }
 
   //补充代码段2
}

裁判测试程序样例:

import java.util.*;
public class Main {
    public static void main(String[] args)  {
        List<Student> list=new ArrayList<Student>();
        list.add(new Student(10,"wangli",89,78,88));
        list.add(new Student(28,"Katefd",89,68,88));
        list.add(new Student(35,"Caoyue",69,78,86));
        list.add(new Student(36,"zhansa",69,78,83));
        list.add(new Student(47,"wanhua",98,88,88));
        list.add(new Student(52,"wanhai",69,88,89));
        list.add(new Student(63,"liwuab",89,78,88));
        Collections.sort(list);
        for(Student stu:list)
        {
            System.out.println(stu);
        }
    }
}

/* 请在这里填写完整的Student类的设计代码 */

输入样例:

输出样例:

Student{id=52, name='wanhai', math=69, english=88, cs=89}
Student{id=36, name='zhansa', math=69, english=78, cs=83}
Student{id=35, name='Caoyue', math=69, english=78, cs=86}
Student{id=10, name='wangli', math=89, english=78, cs=88}
Student{id=63, name='liwuab', math=89, english=78, cs=88}
Student{id=28, name='Katefd', math=89, english=68, cs=88}
Student{id=47, name='wanhua', math=98, english=88, cs=88}

代码实现 

//请按如下提示完善Student类的设计
//内含如下属性:学号(int id)、姓名(String name)、数学成绩(int math)、英语成绩(int english)、计算机成绩(int cs)。
class Student implements Comparable<Student> {
    int id;
    String name;
    int math;
    int english;
    int cs;

   //补充代码段1
    public Student(int id,String name,int math,int english,int cs)
    {
        this.id=id;
        this.name=name;
        this.math=math;
        this.english=english;
        this.cs=cs;
    }
    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", math=" + math +
                ", english=" + english +
                ", cs=" + cs +
                '}';
    }
   //补充代码段2
    @Override
    public int compareTo(Student o)
    {
        if(this.math!=o.math)
            return this.math-o.math;
        else if(this.english!=o.english)
            return o.english-this.english;
        else if(this.cs!=o.cs)
            return this.cs-o.cs;
        else
            return this.id-o.id;
    }
}

6-2 学生对象排序2

分数 10

全屏浏览题目

作者 周雪芹

单位 山东理工大学

设计学生类Student,内含如下属性:学号(int id)、姓名(String name)、数学成绩(int math)、英语成绩(int english)、计算机成绩(int cs)。
创建若干个学生类的对象,将其加入List集合中。将学生对象按照如下规则输出:
(1)数学成绩从小到大;(2)若数学成绩相同,按照英语成绩从大到小;(3)若数学、英语成绩都相同,按照计算机成绩从小到到大;(4)若三门课程成绩都相同,按照姓名字典序从A-Z,a-z逆序排列;(5)若前面的属性均相同,按照学号从小到大顺序。

函数接口定义:

//请按如下提示完善Student类的设计
//内含如下属性:学号(int id)、姓名(String name)、数学成绩(int math)、英语成绩(int english)、计算机成绩(int cs)。
class Student implements Comparable<Student> {
    int id;
    String name;
    int math;
    int english;
    int cs;

   //补充代码段1

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", math=" + math +
                ", english=" + english +
                ", cs=" + cs +
                '}';
    }
 
   //补充代码段2
}

裁判测试程序样例:

import java.util.*;
public class Main {
    public static void main(String[] args)  {
        List<Student> list=new ArrayList<Student>();
        list.add(new Student(10,"wangli",89,78,88));
        list.add(new Student(28,"Katefd",89,68,88));
        list.add(new Student(35,"Caoyue",69,78,86));
        list.add(new Student(36,"caoyue",69,78,86));
        list.add(new Student(32,"Caoyue",69,78,81));
        list.add(new Student(36,"zhansa",69,78,86));
        list.add(new Student(88,"zhansa",69,78,86));
        list.add(new Student(47,"wanhua",98,88,88));
        list.add(new Student(52,"wanhai",69,88,89));
        list.add(new Student(63,"liwuab",89,78,88));
        Collections.sort(list);
        for(Student stu:list)
        {
            System.out.println(stu);
        }
    }
}

/* 请在这里填写答案 */

输入样例:

输出样例:

Student{id=52, name='wanhai', math=69, english=88, cs=89}
Student{id=32, name='Caoyue', math=69, english=78, cs=81}
Student{id=36, name='zhansa', math=69, english=78, cs=86}
Student{id=88, name='zhansa', math=69, english=78, cs=86}
Student{id=36, name='caoyue', math=69, english=78, cs=86}
Student{id=35, name='Caoyue', math=69, english=78, cs=86}
Student{id=10, name='wangli', math=89, english=78, cs=88}
Student{id=63, name='liwuab', math=89, english=78, cs=88}
Student{id=28, name='Katefd', math=89, english=68, cs=88}
Student{id=47, name='wanhua', math=98, english=88, cs=88}

 代码实现 

//请按如下提示完善Student类的设计
//内含如下属性:学号(int id)、姓名(String name)、数学成绩(int math)、英语成绩(int english)、计算机成绩(int cs)。
class Student implements Comparable<Student> {
    int id;
    String name;
    int math;
    int english;
    int cs;

    //补充代码段1
    public Student (int id,String name,int math,int english,int cs)
    {
        this.id=id;
        this.name=name;
        this.math=math;
        this.english=english;
        this.cs=cs;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", math=" + math +
                ", english=" + english +
                ", cs=" + cs +
                '}';
    }

    //补充代码段2
    public int compareTo(Student o)
    {
        if(this.math!=o.math)
        return this.math-o.math;
        else if(this.english!=o.english)
            return o.english-this.english;
        else if(this.cs!=o.cs)
            return this.cs-o.cs;
        else if(!this.name.equals(o.name))
            return o.name.compareTo(this.name);
        else 
            return this.id-o.id;
    }
}

7-1 sdut-Collection-C~K的班级(I)

分数 10

全屏浏览题目

作者 周雪芹

单位 山东理工大学

经过不懈的努力,C~K终于当上了班主任。

现在他要统计班里学生的名单,但是C~K在教务系统中导出班级名单时出了问题,发现会有同学的信息重复,现在他想把重复的同学信息删掉,只保留一个,
但是工作量太大了,所以找到了会编程的你,你能帮他解决这个问题吗?

输入格式:

第一行输入一个N,代表C~K导出的名单共有N行(N<100000).

接下来的N行,每一行包括一个同学的信息,学号 姓名 年龄 性别。

输出格式:

第一行输出一个n,代表删除重复名字后C~K的班级共有几人。

接下来的n行,输出每一个同学的信息,输出按照输入的顺序。

输入样例:

6
0001 MeiK 20 M
0001 MeiK 20 M
0002 sdk2 21 M
0002 sdk2 21 M
0002 sdk2 21 M
0000 blf2 22 F

输出样例:

3
0001 MeiK 20 M
0002 sdk2 21 M
0000 blf2 22 F

代码实现  

import java.util.ArrayList;
import java.util.Scanner;

public class Main{
    public static void main(String[] args)
    {
        Scanner in =new Scanner(System.in);
        ArrayList<String> list=new ArrayList<String>();
        int n=in.nextInt();
        String s=in.nextLine();
        while(n--!=0)
        {
            s=in.nextLine();
            if(list.contains(s))
                continue;//如果这个学生在集合中 跳过本次循环
            list.add(s);//否则存入集合
        }
        System.out.println(list.size());
        for(int i=0;i<list.size();i++)
            System.out.println(list.get(i));
    }
}

7-2 sdut-Collection-sort--C~K的班级(II)

分数 10

全屏浏览题目

作者 周雪芹

单位 山东理工大学

经过不懈的努力,C~K终于当上了班主任。

现在他要统计班里学生的名单,但是C~K在教务系统中导出班级名单时出了问题,发现会有同学的信息重复,现在他想把重复的同学信息删掉,只保留一个,
但是工作量太大了,所以找到了会编程的你,你能帮他解决这个问题吗?

输入格式:

第一行输入一个N,代表C~K导出的名单共有N行(N<100000).

接下来的N行,每一行包括一个同学的信息,学号 姓名 年龄 性别。

输出格式:

第一行输出一个n,代表删除重复名字后C~K的班级共有几人。

接下来的n行,输出每一个同学的信息,输出按照学号从小到大的顺序。

输入样例:

6
0001 MeiK 20 M
0001 MeiK 20 M
0002 sdk2 21 M
0002 sdk2 21 M
0002 sdk2 21 M
0000 blf2 22 F

输出样例:

3
0000 blf2 22 F
0001 MeiK 20 M
0002 sdk2 21 M

代码实现  

import java.util.ArrayList;
import java.util.Scanner;
import java.util.Collections;

public class bc_2
{
    public static void main(String[] args)
    {
        Scanner in=new Scanner(System.in);
        ArrayList<String> list=new ArrayList<String>();
        int n=in.nextInt();
        String s=in.nextLine();
        while (n--!=0)
        {
            s=in.nextLine();
            if(list.contains(s))
                continue;
            list.add(s);
        }
        Collections.sort(list);//排序

        System.out.println(list.size());
        for(int i=0;i<list.size();i++)
            System.out.println(list.get(i));
    }
}

7-3 sdut-Map-Sort--C~K的班级(III)

分数 10

全屏浏览题目

作者 周雪芹

单位 山东理工大学

经过不懈的努力,C~K终于当上了班主任。

现在他要统计班里学生的名单,但是C~K在教务系统中导出班级名单时出了问题,发现有学号相同的学生。学号相同,代表同一个学生。(如果学号相同,后来读入的学生信息会覆盖已有的学生信息)

但是工作量太大了,所以找到了会编程的你,你能帮他解决这个问题吗?

输入格式:

第一行输入一个N,代表C~K导出的名单共有N行。

接下来的N行,每一行包括一个学生的信息,数据之间用1个空格分隔,如:学号 姓名 年龄 性别。

输出格式:

第一行输出一个n,代表数据处理之后C~K的班级共有几人。

接下来的n行,按照学号从小到大的顺序输出每一个学生的信息。

输入样例:

6
0001 MeiK 20 M
0001 Anna 20 M
0002 sdk2 21 M
0002 Chris 21 M
0002 Kare 21 M
0000 blf2 22 F

输出样例:

3
0000 blf2 22 F
0001 Anna 20 M
0002 Kare 21 M

代码实现  

import java.util.*;
import java.util.Scanner;
import java.util.TreeMap;
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int n = cin.nextInt();
        cin.nextLine();
        Map<String, String> map = new TreeMap<String, String>();
        for (int i = 0; i < n; i++) {
            String s = cin.nextLine();
            String t = s.substring(0, 4);//提取学号的前四个作为键
            map.put(t, s);//将学号的前四个字符作为键 学生信息字符串作为值 存在TreeMap中
        }
        System.out.println(map.size());

        for (String it : map.keySet())//增强型for循环,遍历map中键集合,每次迭代将键赋值给it,it代表当前迭代的键
        {
            System.out.println(map.get(it));//获取it对应的值,即学生信息字符串
        }
    }
}

7-4 sdut-LinkedHashMap--C~K的班级(IV)

分数 10

全屏浏览题目

作者 周雪芹

单位 山东理工大学

经过不懈的努力,C~K终于当上了班主任。

现在他要统计班里学生的名单,但是C~K在教务系统中导出班级名单时出了问题,发现有学号相同的学生。学号相同,代表同一个学生。(如果学号相同,后来读入的学生信息会覆盖已有的学生信息)

但是工作量太大了,所以找到了会编程的你,你能帮他解决这个问题吗?

输入格式:

第一行输入一个N,代表C~K导出的名单共有N行。

接下来的N行,每一行包括一个学生的信息,数据之间用1个空格分隔,如:学号 姓名 年龄 性别。

输出格式:

第一行输出一个n,代表数据处理之后C~K的班级共有几人。

接下来的n行,按照学号输入顺序输出每一个学生的信息。

输入样例:

7
0001 MeiK 20 M
0001 Anna 20 M
0002 sdk2 21 M
0002 Chris 21 M
0002 Kare 21 M
0000 blf2 22 F
0000 Maker 23 M


输出样例:

3
0001 Anna 20 M
0002 Kare 21 M
0000 Maker 23 M

import java.util.*;

public class Main {
public static void main(String[] args) {
Scanner cin = new Scanner(System.in);
int n = cin.nextInt();
cin.nextLine();

// 使用LinkedHashMap来保留插入顺序
Map<String, String> map = new LinkedHashMap<>();

for (int i = 1; i <= n; i++) {
String s = cin.nextLine();
String t = s.substring(0, 4);
map.put(t, s);
}

System.out.println(map.size());

for (String it : map.keySet()) {
System.out.println(map.get(it));
}
}
}

7-8 sdut-Collection(Map) 读中国载人航天史,汇航天员数量,向航天员致敬(2)

分数 10

全屏浏览题目

作者 周雪芹

单位 山东理工大学

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

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

截至2021年4月,历任航天英雄名字如下:
杨利伟(神舟五号)
费俊龙、聂海胜(神舟六号)
翟志刚、景海鹏、刘伯明(神舟七号)
景海鹏、刘旺、刘洋(神舟九号)
聂海胜、张晓光、王亚平(神舟十号)
景海鹏、陈东(神舟十一号)

会编程的小伙伴们,请以他们姓名中的拼音字母排序,统计一下航天英雄们出征太空的次数,以实际行动向航天员们致敬!

输入格式:

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

输出格式:

以他们姓名中的拼音字母排序,统计航天英雄们出征太空的次数。
每位航天员占一行,航天员姓名与出征次数中间有一个空格。

输入样例:

YangLiWei杨利伟
FeiJunLong费俊龙    NieHaiSheng聂海胜
Zhaizhigang翟志刚   JingHaiPeng景海鹏           LiuBoMing刘伯明
JingHaiPeng景海鹏   LiuWang刘旺                 LiuYang刘洋
NieHaiSheng聂海胜   Zhangxiaoguang张晓光        WangYaPing王亚平
JingHaiPeng景海鹏   ChenDong陈东
end

输出样例:

ChenDong陈东 1
FeiJunLong费俊龙 1
JingHaiPeng景海鹏 3
LiuBoMing刘伯明 1
LiuWang刘旺 1
LiuYang刘洋 1
NieHaiSheng聂海胜 2
WangYaPing王亚平 1
YangLiWei杨利伟 1
Zhaizhigang翟志刚 1
Zhangxiaoguang张晓光 1

代码实现 

import java.util.*;
import java.util.Map.Entry;

public class Main{
    public static void main(String[] args){
        Scanner cin=new Scanner(System.in);
        Map<String,Integer> map=new TreeMap<String,Integer>();
        /*这里创建了一个TreeMap对象,它会按照键的自然顺序进行排序
        Map接口表示键值对的集合 键是String类型 值是Integer类型
        map = new TreeMap<String, Integer>(); 创建了一个实现了Map接口的具体类的对象,这个具体类是 TreeMap。
        TreeMap是按照键的自然顺序进行排序的有序映射。
         map 是程序中引用这个映射的变量名,你可以使用这个变量来操作和访问这个映射中的数据。
         */
        while(true)
        {
            String s=cin.next();
            if(s.equals("end")) break;
            if(map.containsKey(s)) map.put(s,map.get(s)+1);
            //如果map中已经包含该字符串 对应值加1
            else map.put(s,1);
        }

        for(Map.Entry<String,Integer> entry:map.entrySet())//增强型for循环输出
        {
            System.out.println(entry.getKey()+" "+entry.getValue());
        }
    }
}

7-9 sdut-Collection(List) 读中国载人航天史,汇航天员数量,向航天员致敬(3)

分数 10

全屏浏览题目

作者 周雪芹

单位 山东理工大学

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

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

截至2021年4月,历任航天英雄名字如下:
杨利伟(神舟五号)
费俊龙、聂海胜(神舟六号)
翟志刚、景海鹏、刘伯明(神舟七号)
景海鹏、刘旺、刘洋(神舟九号)
聂海胜、张晓光、王亚平(神舟十号)
景海鹏、陈东(神舟十一号)

会编程的小伙伴们,请以他们出征太空的先后顺序,输出航天英雄们的名字,以实际行动向航天员们致敬!

输入格式:

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

输出格式:

以出征太空的先后顺序,输出航天英雄们的姓名。每位航天员占一行。

输入样例:

杨利伟
费俊龙 聂海胜
翟志刚 景海鹏 刘伯明
景海鹏 刘旺 刘洋
聂海胜 张晓光 王亚平
景海鹏 陈东
end

输出样例:

杨利伟
费俊龙
聂海胜
翟志刚
景海鹏
刘伯明
刘旺
刘洋
张晓光
王亚平
陈东

代码实现 

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class pta09 {
    public static void main(String[] args)
    {
        Scanner in=new Scanner(System.in);
        List<String> list=new ArrayList<String>();
        while(true){
            String s=in.next();
            if(s.equals("end")) break;
            else if(list.contains(s)) continue;
            else
            {
                list.add(s);
                System.out.println(s);
            }
        }
    }
}

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

分数 10

全屏浏览题目

作者 周雪芹

单位 山东理工大学

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 cin=new Scanner(System.in);
        String[] c=new String[100];//姓名
        int n=0;
        int i;
        int [] t=new int[100];//次数
        while(true)
        {
            int flag=0;//用于标记是否已经遇到了相同的单词
            String s=cin.next();
            if(s.equals("end")) break;//如果输入了end 就结束循环

            for(i=0;i<n;i++)//遍历数组c 检查当前输入的姓名是否已经存在于c当中
            {
                if(c[i].equals(s))
                {
                    flag=1;//若存在 标记为1 并跳出循环
                    break;
                }
            }

            if(flag==1) t[i]++;
            else
            {
                t[n]=1;
                c[n]=s;
                n++;
            }
        }
        for(i=0;i<n;i++)
        {
            System.out.println(c[i]+" "+t[i]);
        }
    }
}

方法二

//package answer;

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

public class Main {
    public static void main(String[] args)
    {
        Scanner in=new Scanner(System.in);
        Map<String,Integer> map=new LinkedHashMap<>();

        while(true)
        {
            String s=in.next();
            if(s.equals("end")) break;
            else if(map.containsKey(s)) map.put(s,map.get(s)+1);
            else map.put(s,1);
        }

        for(Map.Entry<String ,Integer> it: map.entrySet())
            System.out.println(it.getKey()+" "+it.getValue());


    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值