第四步:双字段分组。

1、此处依然使用了jdk1.8的新特性(转set时),也可以自己写两个for循环替代。

2、实体类使用的还是Student

3、设计思路就是先将要分组的两个字段分别转为set集合去重,然后借助双层for循环,尽心分组。具体实现代码如下所示:

package com.example.ttdc;

import org.springframework.util.StringUtils;

import java.util.*;

import java.util.stream.Collectors;

public class Test2 {

public static void main(String[] args) {

List list = new ArrayList();

Student student1 = new Student("李四1", "女", "一班");

Student student2 = new Student("李四2", "女", "一班");

Student student3 = new Student("李四3", "女", "一班");

Student student4 = new Student("李四4", "男", "一班");

Student student5 = new Student("李四5", "男", "一班");

Student student6 = new Student("李四6", "男", "二班");

Student student7 = new Student("李四7", "男", "二班");

Student student8 = new Student("李四8", "男", "二班");

Student student9 = new Student("李四9", "男", "二班");

list.add(student1);

list.add(student2);

list.add(student3);

list.add(student4);

list.add(student5);

list.add(student6);

list.add(student7);

list.add(student8);

list.add(student9);

//统计不重复sex

Set sex = new HashSet(list.stream().map(Student::getSex).collect(Collectors.toList()));

Set grade = new HashSet(list.stream().map(Student::getGrade).collect(Collectors.toList()));

//循环分组

Map> map = new HashMap>();

for (String string : sex) {

for (String str : grade) {

if (string == null || str == null) {

continue;

}

List sl = new ArrayList();

for (Student student : list) {

if (string.equals(student.getSex()) && str.equals(student.getGrade())) {

sl.add(student);

}

}

map.put(string + str, sl);

}

}

//查看测试结果

for (Map.Entry> listsList1 : map.entrySet()) {

for (Student st : listsList1.getValue()) {

System.out.println(st.getSex() + " name:" + st.getName() + "  " + st.getGrade());

}

System.out.println("--------------------------");

}

}

}

java 集合分组_java List 如何进行分组相关推荐

  1. java对list分组_Java List排序,分组等操作

    假定有一列实体类对像 List list = UserServer.getList(); 去重,去除重复对象(每个属性的值都一样的),需要注意的是要先重写对象User的equals和hashCode方 ...

  2. java 集合 接口_Java集合之Collection接口

    1 - Java集合介绍 /* 1. 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象 的操作,就要对对象进行存储. 2. 另一方面,使用Array存储对象方面具有一些弊 端,而 ...

  3. java集合总结_Java中集合总结

    Java数组的长度是固定的,为了使程序能够方便地存储和操作数目不固定的一组数据,JDK类库提供了Java集合,这些集合类都位于java.util包中,但是与数组不同的是,集合中不能存放基本类型数据,而 ...

  4. java集合概念_JAVA集合概念

    Java集合是使程序能够存储和操纵元素不固定的一组数据. 所有Java集合类都位于java.uti包中. 与Java数组不同,Java集合中不能存放基本数据类型,只能存放对象的引用.但是在JDK5.0 ...

  5. java集合总结_java集合小总结

    java集合就是一个容器. 1.     集合概述 l       为了保存不确定的数据,或者对象,以及保存具有映射关系的数据. l       所有的集合类都位于java.util包下. 1.1.  ...

  6. java集合系列_Java集合系列01-Java集合概述

    1.Java集合基本概念 在编程中,常常需要集中存放多个数据.从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量,因为数组长度在初始化时指定,意味着只能保存 ...

  7. java集合基础_java常用集合基础知识

    [纯出自个人笔记,如有错误,望改正,谢谢哈! 学习~] 一.Java集合 1.集合类:容器类 装对象的(不能存放基本数据类型,但是里面看到的其实是包装类型) java.util包 ArrayList底 ...

  8. java集合迭代器_java集合迭代器

    一.Java中有一个设计模式是迭代器模式 1.迭代器模式定义 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示. 2.迭代器模式概述 Java集 ...

  9. java集合考试_java集合练习

    分组练习: List>  list=new ArrayList>();这个是二维集合,分组的时候可以在第一层循环中创建一个list,用来接收循环的时候返回的对象,然后把list添加到二维集 ...

最新文章

  1. leetcode 1438. 绝对差不超过限制的最长连续子数组(滑动窗口+treemap)
  2. 《Java8实战》笔记(15):面向对象和函数式编程的混合-Java 8和Scala的比较
  3. python包之间引用_python 子包引用父包和其他子包
  4. js判断浏览器是否安装或启用了flash的方法总结
  5. 为什么不能用Scott登录Oracle,ORA-01017: invalid username/password; logon denied
  6. [NOIP2013]华容道 题解(搜索)
  7. android api (82) —— InputConnection [输入法]
  8. HTML+CSS制作仿制当当网
  9. pdf怎么移除权限口令,忘记pdf密码如何找回?
  10. Towards End-to-End Prosody Transfer for Expressive Speech Synthesis with Tacotron
  11. Linux命令之sed批量替换字符串
  12. 向量积和数量积常用知识
  13. 计算机详细配置快捷键,Win7系统电脑快捷键设置大全
  14. 2021中国低/无代码平台投融资趋势报告: 融资规模近15亿,估值近70亿,马太效应将愈演愈烈...
  15. perl Data::Dumper和Storable的例子
  16. SAP中会计凭证红蓝冲相关分析测试笔记
  17. 路由器连接路由器设置方法
  18. 浙江大学SEL实验室
  19. 计算机无法安装win2008,安装win7或win2008提示安装程序无法创建新的系统分区的解决方法...
  20. outlook 2003收发进度条卡住现象解决办法[exchange模式]

热门文章

  1. 计算机组成原理的重难点,《计算机组成原理》重点难点习题
  2. 从第三方企业邮箱迁移至Office 365(21V) Exchange Online
  3. 使用antd-pro组件 实现图片上传和图片编辑
  4. 智能音箱音效哪个好_2018最火4款智能音箱横评:哪款性价比最高?
  5. 心醉花海,芳菲春色入梦来
  6. 算法介绍及实现——马尔可夫链、隐马尔可夫链(附Python实现)
  7. CTF-NEFU校赛-题解
  8. android照片墙的实现
  9. oracle语句中dual什么意思,oracle中dual详解
  10. 数据挖掘实战(6)——机器学习实现文本分类(今日头条tnews数据集)