`
miaoge
  • 浏览: 109336 次
  • 性别: Icon_minigender_1
  • 来自: 嘉兴
社区版块
存档分类

【集合类】关于List与Map集合的第二题(有一个存放学生类的集合list,打印出每个班级的总分和平均分如题:)

 
阅读更多

建立一个学生类,每个学生有一个姓名属性、班级名称属性(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;
	}

	}

 

 

分享到:
评论

相关推荐

    易语言仿java集合 list map源码

    3. 集合类的实现:分析List类和Map类的内部结构,理解它们如何存储和操作数据。 4. 面向接口编程:虽然易语言没有像Java那样的接口概念,但可以通过模拟接口的实现,提供类似的功能。 5. 键值对操作:了解如何在Map...

    map/list集合转化成xml字符串 xml字符串转化成map/list集合

    例如,如果你有一个`Person`类,你可以将`List&lt;Person&gt;`转换为XML: ```java public String listToXml(List&lt;Person&gt; list) { JAXBContext context = JAXBContext.newInstance(Person.class); Marshaller ...

    Java集合类List-Set-Map的区别和联系.doc

    HashMap 是一个基于哈希表的集合类,HashTable 是一个线程安全的基于哈希表的集合类,TreeMap 是一个基于树形结构的集合类。 三、Collections Collections 是 Java 中提供的一个工具类,提供了对集合类的操作方法...

    List转换为List

    2. **创建Map对象**:针对List中的每一个Bean对象,创建一个Map实例。通常情况下,Map会使用HashMap实现。 3. **复制属性到Map**:从Bean对象中获取属性值,将这些值放入Map中。键通常是属性名,值是属性值。 4. *...

    java集合类详解(set list ArrayList等java集合类详述)

    Java 集合类详解 Java 集合类是 Java 语言中的一种基本数据结构,用于存储和操作大量数据。集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、...

    JAVA Map集合类源码说明

    Map 集合类用于存储元素对(称作“键”和“值”),其中每个键映射到一个值。 从概念上而言,您可以将 List 看作是具有数值键的 Map。而实际上,除了 List 和 Map 都在定义 java.util 中外,两者并没有直接的联系。...

    Hibernate常见集合映射(Set,List_Array,Map,Bag)

    List 集合是有序的,每个集合元素需要有一个表示集合序号的标识,这样可以使用该标识来获得该集合元素。List 集合元素可以重复。 Array 集合映射 Array 集合使用的是 List 的方式来表示的。 Map 集合映射 Map ...

    集合概述set、List、Map

    **Map**接口用于保存键值对(Key-Value)的集合,每个元素都包含一个键和一个值。键是唯一的,而值可以重复。 ##### 4.1 常用方法 - `put(K key, V value)`:将指定的键值对放入Map中。 - `get(Object key)`:返回...

    java集合类list-set-map.doc

    java集合类list-set-map.doc

    Map拆分List拆分

    例如,在Hadoop MapReduce中,InputFormat类负责将输入数据拆分为多个Map任务,每个任务处理一部分键值对。 接下来,List拆分与Map拆分类似,但更专注于有序或无序元素的序列。List通常包含一组元素,这些元素可以...

    Java Map 集合类简介

    【Java Map 集合类简介】 在Java的`java.util`包中,集合类扮演着重要的角色,其中List和Map是最为常见的两种。List的实现例如ArrayList和Vector,它们都是可变大小的列表,适合存储和操作各种类型对象的序列。特别...

    在Java 8中将List转换为Map对象方法

    但是,如果List中有重复的empId,映射到Map时,Key不能重复的,这时我们可以使用BinaryOperator方法来解决这个问题: Map, String&gt; mapOfEmployees = employees.stream().collect( Collectors.toMap( e -&gt; e....

    Java集合排序及java集合类详解(Collection、List、Map、Set)讲解.pdf

    Java集合排序及java集合类详解(Collection、List、Map、Set)讲解 Java集合框架是Java语言中最重要的组件之一,能够正确使用Java集合框架对于Java程序的开发具有无比的好处。本文将详细解释Java集合框架的实现原理、...

    不用遍历的方式在对象集合list中抽取属性集合转化为map或list

    首先新建一个实体类Person @Data public class Person { /** 编码 */ private String code; /** 名字 */ private String name; public Person(String code, String name) { this.code = code; this.name = ...

    Java集合排序及java集合类详解(Collection、List、Map、Set)

    ### Java集合排序及java集合类详解(Collection、List、Map、Set) #### 集合框架概述 ##### 容器简介 在Java编程中,容器(Container)是指用来存储和管理对象的一种数据结构。随着应用程序复杂度的增加,简单地...

    jdk1.8list转map的测试类

    list转map的测试类,用到jdk1.8的新特性,感觉用起来很方便

    java集合类面试题总结

    Java 集合类面试题总结 Java 集合类是 Java 语言中的一种重要组件,用于存储和操作数据。下面总结了 Java 集合类的一些常见问题和答案。 HashMap 和 Hashtable 的区别 HashMap 和 Hashtable 都是 Java 中的散列表...

    List set map集合容器的区别

    - **特点**:`HashMap`是最常用的`Map`实现类,它允许键值对中的键为`null`,但是只允许一个空键,值可以有多个`null`。 - **线程安全性**:`HashMap`不是线程安全的。 - **性能**:`HashMap`提供了非常高效的查找...

    ResultSet 转为listmap

    ResultSet 转为 List&lt;Map&gt; ResultSet 转为 List&lt;Map&gt; 是一种常见的数据处理操作。在 Java 中,使用 JDBC 连接数据库时,通常会返回一个 ResultSet 对象,该对象包含了查询结果集的所有记录。为了方便数据处理和使用...

    自己对List,Set,Map等集合类的理解

    在Java编程语言中,集合框架是处理对象组的重要工具,其中List、Set和Map是最基本的接口,分别代表了有序的列表、无序的集合和键值对的映射关系。下面将详细解释这些集合类及其特点。 1. **List接口**: List是一...

Global site tag (gtag.js) - Google Analytics