java 集合分组_java List 如何进行分组
第四步:双字段分组。
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 如何进行分组相关推荐
- java对list分组_Java List排序,分组等操作
假定有一列实体类对像 List list = UserServer.getList(); 去重,去除重复对象(每个属性的值都一样的),需要注意的是要先重写对象User的equals和hashCode方 ...
- java 集合 接口_Java集合之Collection接口
1 - Java集合介绍 /* 1. 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象 的操作,就要对对象进行存储. 2. 另一方面,使用Array存储对象方面具有一些弊 端,而 ...
- java集合总结_Java中集合总结
Java数组的长度是固定的,为了使程序能够方便地存储和操作数目不固定的一组数据,JDK类库提供了Java集合,这些集合类都位于java.util包中,但是与数组不同的是,集合中不能存放基本类型数据,而 ...
- java集合概念_JAVA集合概念
Java集合是使程序能够存储和操纵元素不固定的一组数据. 所有Java集合类都位于java.uti包中. 与Java数组不同,Java集合中不能存放基本数据类型,只能存放对象的引用.但是在JDK5.0 ...
- java集合总结_java集合小总结
java集合就是一个容器. 1. 集合概述 l 为了保存不确定的数据,或者对象,以及保存具有映射关系的数据. l 所有的集合类都位于java.util包下. 1.1. ...
- java集合系列_Java集合系列01-Java集合概述
1.Java集合基本概念 在编程中,常常需要集中存放多个数据.从传统意义上讲,数组是我们的一个很好的选择,前提是我们事先已经明确知道我们将要保存的对象的数量,因为数组长度在初始化时指定,意味着只能保存 ...
- java集合基础_java常用集合基础知识
[纯出自个人笔记,如有错误,望改正,谢谢哈! 学习~] 一.Java集合 1.集合类:容器类 装对象的(不能存放基本数据类型,但是里面看到的其实是包装类型) java.util包 ArrayList底 ...
- java集合迭代器_java集合迭代器
一.Java中有一个设计模式是迭代器模式 1.迭代器模式定义 迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中的各种元素,而又不暴露该对象的内部表示. 2.迭代器模式概述 Java集 ...
- java集合考试_java集合练习
分组练习: List> list=new ArrayList>();这个是二维集合,分组的时候可以在第一层循环中创建一个list,用来接收循环的时候返回的对象,然后把list添加到二维集 ...
最新文章
- leetcode 1438. 绝对差不超过限制的最长连续子数组(滑动窗口+treemap)
- 《Java8实战》笔记(15):面向对象和函数式编程的混合-Java 8和Scala的比较
- python包之间引用_python 子包引用父包和其他子包
- js判断浏览器是否安装或启用了flash的方法总结
- 为什么不能用Scott登录Oracle,ORA-01017: invalid username/password; logon denied
- [NOIP2013]华容道 题解(搜索)
- android api (82) —— InputConnection [输入法]
- HTML+CSS制作仿制当当网
- pdf怎么移除权限口令,忘记pdf密码如何找回?
- Towards End-to-End Prosody Transfer for Expressive Speech Synthesis with Tacotron
- Linux命令之sed批量替换字符串
- 向量积和数量积常用知识
- 计算机详细配置快捷键,Win7系统电脑快捷键设置大全
- 2021中国低/无代码平台投融资趋势报告: 融资规模近15亿,估值近70亿,马太效应将愈演愈烈...
- perl Data::Dumper和Storable的例子
- SAP中会计凭证红蓝冲相关分析测试笔记
- 路由器连接路由器设置方法
- 浙江大学SEL实验室
- 计算机无法安装win2008,安装win7或win2008提示安装程序无法创建新的系统分区的解决方法...
- outlook 2003收发进度条卡住现象解决办法[exchange模式]
热门文章
- 计算机组成原理的重难点,《计算机组成原理》重点难点习题
- 从第三方企业邮箱迁移至Office 365(21V) Exchange Online
- 使用antd-pro组件 实现图片上传和图片编辑
- 智能音箱音效哪个好_2018最火4款智能音箱横评:哪款性价比最高?
- 心醉花海,芳菲春色入梦来
- 算法介绍及实现——马尔可夫链、隐马尔可夫链(附Python实现)
- CTF-NEFU校赛-题解
- android照片墙的实现
- oracle语句中dual什么意思,oracle中dual详解
- 数据挖掘实战(6)——机器学习实现文本分类(今日头条tnews数据集)