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
如有问题,及时沟通~~~