面试真题给定3个班级,班级id号分别为c1,c2,c3,随机生成一个List<Student> students,每个班级的score和classId均随机,输出每个班级里学生的平均成绩

Posted Cry丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试真题给定3个班级,班级id号分别为c1,c2,c3,随机生成一个List<Student> students,每个班级的score和classId均随机,输出每个班级里学生的平均成绩相关的知识,希望对你有一定的参考价值。

给定一个基本数据类型如下:

class Student
	int score; // 成绩
	String classId; // 班级id号

给定3个班级,班级id号分别为c1,c2,c3,随机生成一个List<Student> students; 该students的size()为15000,每一个学生Student的班级随机从c1、c2和c3中选取,每一个学生Student的成绩score随机从60到100随机选取,输出为每个班级里学生的平均成绩(多线程)。

参考代码

class Solution 

    // 分治的思想,把原列表分成3个列表开3个线程分别处理即可
    public static void  solution(List<Student> list) 
        List<Student> listC1 = new ArrayList();
        List<Student> listC2 = new ArrayList();
        List<Student> listC3 = new ArrayList();
        for(int i = 0; i < list.size(); i++)
            Student stu = list.get(i);
            if("c1".equals(stu.classId))
                listC1.add(stu);
             else if("c2".equals(stu.classId))
                listC2.add(stu);
             else if("c3".equals(stu.classId))
                listC3.add(stu);
            
        
        CountThread countThread1 = new CountThread(listC1);
        countThread1.start();
        CountThread countThread2 = new CountThread(listC2);
        countThread2.start();
        CountThread countThread3 = new CountThread(listC3);
        countThread3.start();
    


class CountThread extends Thread 

    List<Student> list;

    int sum = 0;

    int meanScore = 0;

    public CountThread(List<Student> list)
        this.list = list;
    

    @Override
    public void run()
        for(int i = 0;i < list.size();i++)
            sum = sum + list.get(i).score;
        
        meanScore = sum / list.size();
        System.out.println("meanScore: " + meanScore);
    


class Student
    int score;
    String classId;



/**
 * classId的枚举
 */
enum ClassIdEnum 

    C_1("c1",1),

    C_2("c2",2),

    C_3("c3",3);

    private String code;

    private int num;

    ClassIdEnum(String code,int num) 
        this.code = code;
        this.num = num;
    

    public static String getCodeByNum(int num) 
        if(num == 1)
            return C_1.code;
        else if(num == 2)
            return C_2.code;
        else if(num == 3)
            return C_3.code;
        
        return null;
    


class ShowMeBug 

    /**
     * 随机生成一个students, 它的size是15000
     */
    private static List<Student> studentRandom() 
        Random random = new Random(1);
        ArrayList<Student> list = new ArrayList();
        for (int i = 0; i < 10; i++)
            // score: 60 - 100
            // classId: c1 c2 c3
            // random: [0 - 40) + 60 = [60, 101)
            Student stu = new Student();
            stu.score = random.nextInt(40) + 61;
            System.out.println(stu.score);
            // [0 1 2] + 1 = [1 2 3]
            int j = random.nextInt(3) + 1;
            System.out.println(j);
            String code = ClassIdEnum.getCodeByNum(j);
            stu.classId = code;
            list.add(stu);

        
        return list;
    

    public static void main(String[] args) 
        System.out.println("Hello World!");
        List<Student> list = studentRandom();
        Solution.solution(list);
    

以上是关于面试真题给定3个班级,班级id号分别为c1,c2,c3,随机生成一个List<Student> students,每个班级的score和classId均随机,输出每个班级里学生的平均成绩的主要内容,如果未能解决你的问题,请参考以下文章

(急)4个excel数据表合并成1个表

少儿编程 电子学会图形化scratch编程等级考试一级真题答案解析(选择题)2021-3

python读取班级成绩 青少年编程电子学会python编程等级考试三级真题解析2020年9月

python读取班级成绩 青少年编程电子学会python编程等级考试三级真题解析2020年9月

scratch班级名称 电子学会图形化编程scratch等级考试四级真题和答案解析B卷2020-9

班级娱乐赛 K短路计数