package com.common.main.mapAndList;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
* @author LiJianShe
* @version 創建時間:Mar 19, 2010 3:33:35 PM 類說明:Student.java
*/
public class Student {
private String classId;
private String studentId; // 学号
private String studentName; // 姓名
private String sex; // 性別 0 男 1 女
public String getClassId() {
return classId;
}
public void setClassId(String classId) {
this.classId = classId;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getStudentId() {
return studentId;
}
public void setStudentId(String studentId) {
this.studentId = studentId;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
List studentAllList = null ;// 所以班級的学生
//步骤1
Map<String ,List> map = new HashMap<String ,List>();
Map<String ,Object> mapLast = new HashMap<String ,Object>();
// for(Student student : studentAllList){
for(Iterator it = studentAllList.iterator();it.hasNext();){
Student student = (Student)it.next();
if(map.containsKey(student.getClassId())){ //如果已经存在这个数组,就放在这里
List studentList = map.get(student.getClassId());
studentList.add(student);
}else{
List studentList = new ArrayList(); //重新声明一个数组list
studentList.add(student);
map.put(student.getClassId(), studentList);
}
}
// 步骤2
// 利用 处理1 步骤 分组完的数据 ,按性别 男/女 再次分组
for(Map.Entry<String, List> m: map.entrySet()){ //按键值遍历 Map
Map mapList = new HashMap(); //
List studentSingle = m.getValue(); //同一班级的学生,男女
List studentListMen = new ArrayList(); // 声明一个存放男生的 list
List studentListWomen = new ArrayList(); // 声明一个存放女生的 list
for(Iterator it = studentSingle .iterator();it.hasNext();){//遍历
Student student = (Student)it.next();
if("0".equals(student.getSex())){ //男生
studentListMen.add(student); //男生
}else{
studentListWomen.add(student); //女生
}
}
mapLast.put("班级", m.getKey());
mapLast.put("学生 男", studentListMen);
}
}
}
分享到:
相关推荐
在Java中,我们可以使用内置的集合框架(如`List`, `Set`, `Map`等)配合`Stream API`来实现高效的数据分组。 首先,让我们简要了解一下`Stream API`,这是Java 8引入的一个强大特性,它提供了一种声明式编程风格,...
在上面的例子中,我们首先根据名字进行分组,然后在每个名字的分组内部再根据年龄进行分组。这样,我们就可以方便地访问特定名字和年龄的人群。 除了上述基本用法,还可以结合`filter`、`map`等其他Stream操作来...
实现了类似SQL语句中的计数count(*)、where查询、group by分组查询等操作。实际应用中可以在java中对数据库中取到的数据作进一步加工,减少数据库服务器的压力,减少对数据库“方言”的依赖。可供初学者参考(前提...
本篇文章将详细介绍如何对一个由字典(dict)组成的列表(list)进行去重操作,并通过几个具体的例子来展示不同的实现方式。 #### 背景介绍 假设我们有一个列表,其中的每个元素都是一个字典。我们需要根据某个...
在Reduce阶段,Map阶段输出的中间键值对根据键(key)进行排序和分组,然后对每个键组内的值列表执行reduce函数。Reduce函数的输入是一个键和该键对应的所有值列表,输出是一个或多个键值对。 标题中提到的...
在这个例子中,我们首先使用`zip(*list)`将列表按列分组,然后使用`map(sum, column_groups)`计算每一列的总和。 通过上述示例,我们可以看到`map()`和`zip()`在Python中的强大功能以及它们在实际编程中的广泛应用...
CListCtrl提供了一种灵活的方式来显示、编辑和操作数据,常见的应用场景包括文件管理器、任务管理器等。 CListCtrl类基于Windows API中的LVN开头的消息通知,这些消息通知用于处理用户与列表视图控件的交互,如单击...
- **Reduce阶段**:在Map阶段完成后,系统会根据中间键值对的键进行分组,并将每个键对应的值传递给用户定义的reduce函数。reduce函数的作用是合并所有具有相同键的中间键值对中的值部分,从而生成最终的结果。 ...
要将此自定义分组应用于拓扑中的流,可以使用以下代码: ```java builder.setBolt("myBolt", new MyBolt()) .customGrouping("mySpout", new CustomPartialKeyGrouping()); ``` 部分密钥分组策略适用于那些希望在...
MapReduce适用于各种应用场景,如关系代数运算(如选择、投影、连接等)、分组与聚合运算(如计数、求和、平均值等)、以及矩阵运算。此外,它还广泛应用于搜索引擎的索引构建、社交网络分析、日志分析等领域。 在...
- `collect()`:将Stream转换为其他数据结构,如List、Set或Map。 - `groupingBy()`:按指定条件对元素进行分组。 - `average()`, `count()`, `sum()`:用于统计、求和和计数等操作。 总的来说,Java 8的Lambda...
reducer则按祖父分组,收集所有的孙子,最后yield出祖父母和他们的孙子列表。 要运行这个作业,我们需要配置输入数据和运行环境,然后调用`MRGrandparents.run()`。输出结果将是祖父母及其对应的孙子列表,这可以...
在给定的例子中,我们看到了如何利用Lambda表达式简化分组操作。 首先,让我们回顾一下Lambda表达式的语法。Lambda表达式的基本形式是`参数列表 -> 表达式或代码块`。在Java8中,如果函数体只有一条语句,我们可以...
5.1.17. map, set, list, bag 5.1.18. 引用(import) 5.2. NHibernate 的类型 5.2.1. 实体(Entities)和值(values) 5.2.2. 基本值类型 5.2.3. 自定义值类型 5.2.4. Any类型映射 5.3. SQL中引号包围的标识符 5.4. 模块...
当遇到`R`元素时,我们将其中的每个`C`元素(代表列)及其值读取出来并存储到一个Map中,最后将这个Map添加到一个List中,用于保存所有的记录。 #### 五、总结 通过上述示例,我们可以看到StAX在组装和解析XML文档...
在这个例子中,`Sortable`组件接收`list`属性作为需要排序的数据,`onSortEnd`回调则在排序结束后被调用,你可以在这里更新你的数据源以反映新的顺序。 ### 4. 自定义样式和行为 React Sortable 允许你通过CSS样式...
首先,让我们了解一下标题和描述中提到的`for循环`在Java中的应用。在Java中,我们通常使用增强for循环(foreach)来遍历集合,如ArrayList或LinkedList: ```java List<String> names = new ArrayList(); for ...
- `groupBy()`:根据指定的函数将集合元素进行分组,返回一个Map,键为分组依据,值为分组后的集合。 - `transform()`:对集合中的每个元素应用一个Function,返回转换后的新集合。 6. **其他实用方法** - `...
通常这样的例子会包括创建一个测试类,并使用 TestNG 的注解来定义测试方法。 - **示例代码**: ```java import org.testng.annotations.Test; import com.jtester.junit.Assert; public class SimpleTest { @...
本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...