建立一个学生类,每个学生有一个姓名属性、班级名称属性(String)和考试成绩
属性(int),实例化10个对象先存放到一个list中,要求有三个不同的班级;某次
考试结束后,每个学生都获得了一个考试成绩。请打印出每个班级的总分和平均分
以及人数。
将学生的班级信息提取出来,然后按班级与学生键值配对存放到map中,跟第1题的形式一样,最后统计每个班级对应的学生集合中的每个学生的分数。
该题误点:
这题很多人有一个误点就是if(list.get(i).Class == "一班") 直接这样来判断某个学生的班级信息是否属于“一班”,这样肯定是不行的,你想想学生信息是通过构造器传参进来的,我们怎么知道他是属于哪个班?怎么得到有"一班"的?
所以这里应该用if (m.containsKey(classNumber)) 语句来判断Map中是否包含这个班级的键,若包含就通过m.get(classNumber)方法获得对应的学生信息集合,然后把该学生添加到这个集合中;若不包含就添加一个该班级与一个存放该班级学生信息的list集合的键值进去。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
/**
* @author 小苗
*某中学有若干学生(学生对象放在一个List中),每个学生有一个姓名属性、班级名称
属性(String)和考试成绩属性(int),某次考试结束后,每个学生都获得了一个考试成绩。
请打印出每个班级的总分和平均分。
*/
public class TestListMap {
public void count(List<Student> students){
Map<String, List<Student>> m = new HashMap<String, List<Student>>();
//得到list中的学生的班级信息,按不同的班级添加到Map中
for (int i = 0; i < students.size(); i++) {
Student s = (Student) students.get(i);
String classNumber = s.getClassNumber();
//如果班级存在就将学生添加到该班级对应的学生集合中
if (m.containsKey(classNumber)) {
List<Student> list = m.get(classNumber);
list.add(s);
} else {
List<Student> list = new ArrayList<Student>();
list.add(s);
m.put(classNumber, list);
}
}
//遍历map集合 获得班级 和对应的学生集合
for (Entry<String, List<Student>> ent : m.entrySet()) {
List<Student> s = ent.getValue();
int total = 0;
//遍历学生集合得到每个学生的分数 求总和
for (int n = 0; n < s.size(); n++) {
total = total + s.get(n).getScore();
}
System.out.println(ent.getKey() + "班 总分:" + total + " 平均分:"
+ (float) total / s.size() + " 人数:" + s.size());
}
}
public static void main(String[] args) {
TestListMap tlm = new TestListMap();
List<Student> students = new ArrayList<Student>();
students.add(new Student("Liucy", "0701", 100));
students.add(new Student("Huxz", "0702", 150));
students.add(new Student("George", "0702", 142));
students.add(new Student("Wanglin", "0701", 80));
students.add(new Student("Wuwl", "0701", 91));
students.add(new Student("Wangr", "0702", 100));
tlm.count(students);
}
}
/**
* 学生类
* @author 小苗 */
class Student{
private String name;
private String classNumber;
private int score;
public Student(String name, String classNumber, int score) {
super();
this.name = name;
this.classNumber = classNumber;
this.score = score;
}
public String getClassNumber() {
return classNumber;
}
public void setClassNumber(String classNumber) {
this.classNumber = classNumber;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
}
分享到:
相关推荐
Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。 从概念上而言,您可以将 List 看作是具有数值键的 Map。而实际上,除了 List 和 Map 都在定义 java.util 中外,两者并没有直接的联系。...
java集合类list-set-map.doc
易语言面相对象编程仿java集合 list, 以及map工具类 模块ec源码
最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。
首先新建一个实体类Person @Data public class Person { /** 编码 */ private String code; /** 名字 */ private String name; public Person(String code, String name) { this.code = code; this.name = ...
4)打印集合的大小,然后删除集合中的第3个元素,并显示删除元素的内容,然后再打印目前集合中第3个元素的内容,并再次打印集合的大小。 3、编写程序练习Map集合的基本使用: 1)创建一个只能容纳String对象的...
list转map的测试类,用到jdk1.8的新特性,感觉用起来很方便
主要介绍了在Java 8中将List转换为Map对象方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
Java集合排序及java集合类详解(Collection、List、Map、Set)
Java集合排序及java集合类详解(Collection、List、Map、Set).doc
Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。 从概念上而言,您可以将 List 看作是具有数值键的 Map。 而实际上,除了 List 和 Map 都在定义 java.util 中外,两者并没有直接的联系...
Java基础知识汇总之集合框架List、Map、Set接口及其子类综合对比
Java集合排序及java集合类详解(Collection、List、Map、Set
// java中对象容器主要有Set,List和Map三个接口类。 // 迭代器(Iterator)模式,又叫做游标(Cursor)模式。 // GOF给出的定义为:提供一种方法访问一个容器(container)对象中的各个元素, // 而又不需暴露该...
要注意的是List,Set,Queue继承了Collection接口,...这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类,泛型、重写equals、hashCode
Java中有哪些容器(集合类)? 线程安全和线程不安全的分别有哪些? Map接口有哪些实现类? 描述一下Map put的过程 如何得到一个线程安全的Map? HashMap有什么特点? ConcurrentHashMap是怎么分段分组的? ...
可扩展为自定义集合类。 实现类:8个实现类(实线表示),对接口的具体实现。 在很大程度上,一旦您理解了接口,您就理解了框架。虽然您总要创建接口特定的实现,但访问实际集合的方法应该限制在接口方法的使用上...
Java集合排序及java集合类详解(Collection、List、Map、Set).pdf