IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 【面试真题】给定3个班级,班级id号分别为c1,c2,c3,随机生成一个List<Student> students,每个班级的score和classId均随机,输出每个班级里学生的平均成绩 -> 正文阅读

[数据结构与算法]【面试真题】给定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);
    }
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-02-19 01:25:36  更:2022-02-19 01:27:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 15:22:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码