• 编号0-999的学生,为每位学生随机生成考试成绩(0-100分),找出10个最好成绩,学生获得相同分数最多的5个分数,并列出获得这几个分数的学生编号清单。


    package com.cn;

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Random;

    /**
    * Created by Sam on 2017/1/9.
    */
    public class ToolClassPractice {
    public static void main(String[] args) {
    int[] score = new int[101];
    // 出现次数统计的集合---key出现的分数,value为出现的次数
    Map<Integer, Integer> map_times = new HashMap<Integer, Integer>();
    // 学生对象的集合---key为编号,value为分数
    Map<Integer, Integer> map_Stu = new HashMap<Integer, Integer>();
    // 生成1000个学生
    for (int i = 0; i < 1000; i++) {
    Random random = new Random();
    // 在0-100分之间随机产生分数
    int j = random.nextInt(101);
    // 统计每个分数所出现的次数
    score[j]++;
    map_Stu.put(i, j);
    }

    for (int q = 0; q <= 100; q++) {
    map_times.put(q, score[q]);
    }

    ToolClassPractice t = new ToolClassPractice();
    // 学生的Map集合转化为List集合
    List<Map.Entry<Integer, Integer>> list_Stu = new ArrayList<Map.Entry<Integer, Integer>>();
    // 出现的次数Map集合转化为List集合
    List<Map.Entry<Integer, Integer>> list_Times = new ArrayList<Map.Entry<Integer, Integer>>();

    // 将分数进行排序
    list_Stu = t.sortMapByValue(map_Stu);
    System.out.println("10个最高的分数为:");
    for (int a = 0; a < 10; a++) {
    System.out.println(list_Stu.get(a).getValue());
    }

    // 将次数集合进行排序
    list_Times = t.sortMapByValue(map_times);

    // 取得前5个次数集合
    List<Map.Entry<Integer, Integer>> list_TimesTop5 = new ArrayList<Map.Entry<Integer, Integer>>();
    for (int p = 0; p < 5; p++) {
    list_TimesTop5.add(list_Times.get(p));
    }
    // 得到分数最多的前五个分数集合的学生对象
    System.out.println("分数最多的前五个的学生对象:");
    for (Map.Entry<Integer, Integer> entryTimes : list_TimesTop5) {
    int count = 0;
    for (Map.Entry<Integer, Integer> entry : list_Stu) {
    count++;
    if (count == 1) {
    System.out.println("---" + entryTimes.getKey() + "的分数有" + entryTimes.getValue() + "人" + "---");
    }

    // 次数集合的分数 与 学生集合的分数 相等
    if (entryTimes.getKey() == entry.getValue()) {
    System.out.println("学号:" + entry.getKey() + " 分数:" + entry.getValue());
    }
    }
    }
    }

    //对于Map集合按照Value值排序
    public List<Map.Entry<Integer, Integer>> sortMapByValue(Map<Integer, Integer> map) {
    // 将Map转化为List集合,List采用ArrayList
    List<Map.Entry<Integer, Integer>> list_Data = new ArrayList <Map.Entry<Integer, Integer>>(map.entrySet());
    // 通过Collections.sort(List I,Comparator c)方法进行排序
    Collections.sort(list_Data, new Comparator<Map.Entry<Integer, Integer>>() {

    @Override
    public int compare(Entry<Integer, Integer> o1, Entry<Integer, Integer> o2) {
    return (o2.getValue() - o1.getValue());
    }
    });
    return list_Data;
    }
    }
  • 相关阅读:
    在Servlet中使用JSON
    Servlet中Web.xml的配置详解
    项目人力资源管理的思考
    CRLF和LF
    Linux 时区变化
    开始 space viking 之旅
    HTML的标签canvas
    问题解决了——在虚拟机上测试串口软件 您会收到错误数据
    Very Deep Convolutional Networks for Large-Scale Image Recognition
    MapReduce的InputFormat学习过程
  • 原文地址:https://www.cnblogs.com/sam-cheng/p/6284673.html
Copyright © 2020-2023  润新知