`
huangronaldo
  • 浏览: 222663 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

List Map分组应用的小例子

    博客分类:
  • Java
 
阅读更多

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引入的一个强大特性,它提供了一种声明式编程风格,...

    java8实战:使用流收集数据之toList、joining、groupBy(多字段分组)

    在上面的例子中,我们首先根据名字进行分组,然后在每个名字的分组内部再根据年龄进行分组。这样,我们就可以方便地访问特定名字和年龄的人群。 除了上述基本用法,还可以结合`filter`、`map`等其他Stream操作来...

    java8中stream特性对比实现SQL语句等价功能的用法的部分示例

    实现了类似SQL语句中的计数count(*)、where查询、group by分组查询等操作。实际应用中可以在java中对数据库中取到的数据作进一步加工,减少数据库服务器的压力,减少对数据库“方言”的依赖。可供初学者参考(前提...

    python去重,一个由dict组成的list的去重示例

    本篇文章将详细介绍如何对一个由字典(dict)组成的列表(list)进行去重操作,并通过几个具体的例子来展示不同的实现方式。 #### 背景介绍 假设我们有一个列表,其中的每个元素都是一个字典。我们需要根据某个...

    MapReduce初级案例

    在Reduce阶段,Map阶段输出的中间键值对根据键(key)进行排序和分组,然后对每个键组内的值列表执行reduce函数。Reduce函数的输入是一个键和该键对应的所有值列表,输出是一个或多个键值对。 标题中提到的...

    python中map()与zip()操作方法

    在这个例子中,我们首先使用`zip(*list)`将列表按列分组,然后使用`map(sum, column_groups)`计算每一列的总和。 通过上述示例,我们可以看到`map()`和`zip()`在Python中的强大功能以及它们在实际编程中的广泛应用...

    CListCtrl类的使用实例

    CListCtrl提供了一种灵活的方式来显示、编辑和操作数据,常见的应用场景包括文件管理器、任务管理器等。 CListCtrl类基于Windows API中的LVN开头的消息通知,这些消息通知用于处理用户与列表视图控件的交互,如单击...

    google mapreduce

    - **Reduce阶段**:在Map阶段完成后,系统会根据中间键值对的键进行分组,并将每个键对应的值传递给用户定义的reduce函数。reduce函数的作用是合并所有具有相同键的中间键值对中的值部分,从而生成最终的结果。 ...

    partial-key-grouping:Apache Storm的部分密钥分组的实现和示例。 部分密钥分组是分布式流处理系统的负载平衡策略

    要将此自定义分组应用于拓扑中的流,可以使用以下代码: ```java builder.setBolt("myBolt", new MyBolt()) .customGrouping("mySpout", new CustomPartialKeyGrouping()); ``` 部分密钥分组策略适用于那些希望在...

    6-MapReduce.ppt

    MapReduce适用于各种应用场景,如关系代数运算(如选择、投影、连接等)、分组与聚合运算(如计数、求和、平均值等)、以及矩阵运算。此外,它还广泛应用于搜索引擎的索引构建、社交网络分析、日志分析等领域。 在...

    Java8知识详细分享

    - `collect()`:将Stream转换为其他数据结构,如List、Set或Map。 - `groupingBy()`:按指定条件对元素进行分组。 - `average()`, `count()`, `sum()`:用于统计、求和和计数等操作。 总的来说,Java 8的Lambda...

    Mapreduce-1python中的MapReduce的孙子祖父母对.zip

    reducer则按祖父分组,收集所有的孙子,最后yield出祖父母和他们的孙子列表。 要运行这个作业,我们需要配置输入数据和运行环境,然后调用`MRGrandparents.run()`。输出结果将是祖父母及其对应的孙子列表,这可以...

    Java8中lambda表达式的应用及一些泛型相关知识

    在给定的例子中,我们看到了如何利用Lambda表达式简化分组操作。 首先,让我们回顾一下Lambda表达式的语法。Lambda表达式的基本形式是`参数列表 -&gt; 表达式或代码块`。在Java8中,如果函数体只有一条语句,我们可以...

    NHibernate中文帮组文档(2008.11月更新)

    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. 模块...

    用Stax组装及解析XML

    当遇到`R`元素时,我们将其中的每个`C`元素(代表列)及其值读取出来并存储到一个Map中,最后将这个Map添加到一个List中,用于保存所有的记录。 #### 五、总结 通过上述示例,我们可以看到StAX在组装和解析XML文档...

    react-sortable:使用react实现的简单的可拖拽排序的列表

    在这个例子中,`Sortable`组件接收`list`属性作为需要排序的数据,`onSortEnd`回调则在排序结束后被调用,你可以在这里更新你的数据源以反映新的顺序。 ### 4. 自定义样式和行为 React Sortable 允许你通过CSS样式...

    都9102年了,你还用for循环操作集合吗

    首先,让我们了解一下标题和描述中提到的`for循环`在Java中的应用。在Java中,我们通常使用增强for循环(foreach)来遍历集合,如ArrayList或LinkedList: ```java List&lt;String&gt; names = new ArrayList(); for ...

    CollectionUtils:用java编写库函数

    - `groupBy()`:根据指定的函数将集合元素进行分组,返回一个Map,键为分组依据,值为分组后的集合。 - `transform()`:对集合中的每个元素应用一个Function,返回转换后的新集合。 6. **其他实用方法** - `...

    jTester使用指南(带书签).pdf

    通常这样的例子会包括创建一个测试类,并使用 TestNG 的注解来定义测试方法。 - **示例代码**: ```java import org.testng.annotations.Test; import com.jtester.junit.Assert; public class SimpleTest { @...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...

Global site tag (gtag.js) - Google Analytics