利用HashMap做学生成绩管理表

Students 类

package com.lanou.students;

import java.util.Map;
import java.util.Set;

public class Students implements Comparable<Students> {
	private int num;
	private String name;
	private Map<String, Integer> map;

	// 判断及格
	public boolean hasNotPass() {
		Set<String> keys = map.keySet();
		boolean flag = true;
		for (String str : keys) {
			if (map.get(str) < 60) {
				flag = false;
			}
		}
		return flag;
	}

	// 平均成绩
	public float avg() {
		Set<String> keys = map.keySet();
		boolean flag = true;
		int sum = 0;
		for (String str : keys) {
			sum += map.get(str);
		}
		return (float) sum / map.size();
	}

	// 给一个学科 判断map的k值是否包含 传入的str 包含的话传回true
	public boolean hasCourse(String str) {
		return map.containsKey(str);
	}

	// --------------------------------------------------------------------

	public Students(int num, String name, Map<String, Integer> map) {
		super();
		this.num = num;
		this.name = name;
		this.map = map;
	}

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Map<String, Integer> getMap() {
		return map;
	}

	public void setMap(Map<String, Integer> map) {
		this.map = map;
	}

	@Override
	public String toString() {
		return "num=" + num + "\tname=" + name + "\t map=" + map;
	}

	@Override
	public int compareTo(Students o) {
		return o.avg() - this.avg() > 0 ? 1 : -1;
	}

}

主函数调用

package com.lanou.students;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;

public class Main {
	public static void main(String[] args) {
		//初始化
		List<Students> list = init();
		//求及格的学生
		for (int i = 0; i < list.size(); i++) {
			if (list.get(i).hasNotPass()) {
				System.out.println(list.get(i).getName()+"及格");
			}
		}
		//按平均数排序
		Collections.sort(list);
		
		//按平均数输出
		for (Students item :list) {
			System.out.println(item.getName()+"平均分:"+item.avg());
		}
		//求学java的人
		for (Students item :list) {
			if(item.hasCourse("java")) {
				System.out.println(item.getName()+"选了java");	
			}
		}
	}

	public static List<Students> init() {//初始化
		String[] course = { "语文", "数学", "英语", "政治", "java", "数据库", "分布式" };
		ArrayList<Students> list = new ArrayList<>();
		Random random = new Random();
		for (int i = 0; i < 10; i++) {
			Map<String, Integer> map = new HashMap<>();
			int j = random.nextInt(4);
			while (map.size() < j + 3) {
				map.put(course[random.nextInt(course.length)], random.nextInt(101) + 50);
			}
			Students s = new Students(i + 1, "学生" + (i + 1), map);
			list.add(s);
			System.out.println(s);
		}
		return list;
	}
}

操作结果如下:

num=1	name=学生1	 map={java=106, 数学=107, 数据库=73, 英语=80}
num=2	name=学生2	 map={英语=89, 数据库=150, 分布式=92}
num=3	name=学生3	 map={数学=124, 语文=76, 英语=75}
num=4	name=学生4	 map={政治=60, 数学=61, 语文=147}
num=5	name=学生5	 map={政治=136, 数学=82, 语文=139}
num=6	name=学生6	 map={政治=127, java=131, 英语=72, 数据库=136, 分布式=73}
num=7	name=学生7	 map={政治=71, java=95, 数学=108, 分布式=131}
num=8	name=学生8	 map={java=77, 数学=127, 英语=59}
num=9	name=学生9	 map={数学=144, 语文=56, 数据库=57, 英语=94, 分布式=95}
num=10	name=学生10	 map={政治=116, java=71, 数学=101, 语文=143, 分布式=113}
学生1及格
学生2及格
学生3及格
学生4及格
学生5及格
学生6及格
学生7及格
学生10及格
学生5平均分:119.0
学生2平均分:110.333336
学生10平均分:108.8
学生6平均分:107.8
学生7平均分:101.25
学生3平均分:91.666664
学生1平均分:91.5
学生4平均分:89.333336
学生9平均分:89.2
学生8平均分:87.666664
学生10选了java
学生6选了java
学生7选了java
学生1选了java
学生8选了java

如有问题,及时沟通~~~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值