首页 > 编程语言 >java lambda List 分组 Collectors.groupingBy

java lambda List 分组 Collectors.groupingBy

时间:2023-04-04 11:11:40浏览次数:37  
标签:java Collectors groupingBy money age Dome domes 王五 name

package lambda.list;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import pojo.Dome;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * @Author: xxx
 * @date 2021/5/14
 **/
@Slf4j
public class GroupTest {

    /***
     * 初始化测试数组
     * @date 2021/5/14
     **/

    private List<Dome> initArray() {
        Dome dome1 = new Dome("张三", 11.0, 10);
        Dome dome2 = new Dome("李四", 61.0, 11);
        Dome dome3 = new Dome("王五", 26.0, 12);
        Dome dome4 = new Dome("张三", 14.0, 14);
        Dome dome5 = new Dome("王五", 24.0, 15);
        Dome dome6 = new Dome("李四", 16.0, 16);
        Dome dome7 = new Dome("赵六", 35.0, 17);

        List<Dome> domes = new ArrayList<>();

        domes.add(dome1);
        domes.add(dome2);
        domes.add(dome3);
        domes.add(dome4);
        domes.add(dome5);
        domes.add(dome6);
        domes.add(dome7);

        log.info("domes : {}", domes);

        return domes;
    }

    /***
     * List分组
     * @date 2021/5/13
     **/

    @Test
    public void groupTest() {
        List<Dome> domes = initArray();

        Map<String, List<Dome>> collect = domes.stream().collect(Collectors.groupingBy(Dome::getName));

        log.info(" ================================================ ");

        for (String s : collect.keySet()) {
            log.info(" {} -> {}", s, collect.get(s));
        }

        log.info(" ================================================ ");

        for (Map.Entry<String, List<Dome>> stringListEntry : collect.entrySet()) {
            log.info(" {} -> {}", stringListEntry.getKey(), stringListEntry.getValue());
        }

/*
domes : [Dome{name='张三', money=11.0, age=10}, Dome{name='李四', money=61.0, age=11}, Dome{name='王五', money=26.0, age=12}, Dome{name='张三', money=14.0, age=14}, Dome{name='王五', money=24.0, age=15}, Dome{name='李四', money=16.0, age=16}, Dome{name='赵六', money=35.0, age=17}]
 ================================================
 李四 -> [Dome{name='李四', money=61.0, age=11}, Dome{name='李四', money=16.0, age=16}]
 张三 -> [Dome{name='张三', money=11.0, age=10}, Dome{name='张三', money=14.0, age=14}]
 王五 -> [Dome{name='王五', money=26.0, age=12}, Dome{name='王五', money=24.0, age=15}]
 赵六 -> [Dome{name='赵六', money=35.0, age=17}]
 ================================================
 李四 -> [Dome{name='李四', money=61.0, age=11}, Dome{name='李四', money=16.0, age=16}]
 张三 -> [Dome{name='张三', money=11.0, age=10}, Dome{name='张三', money=14.0, age=14}]
 王五 -> [Dome{name='王五', money=26.0, age=12}, Dome{name='王五', money=24.0, age=15}]
 赵六 -> [Dome{name='赵六', money=35.0, age=17}]
*/
    }
}

标签:java,Collectors,groupingBy,money,age,Dome,domes,王五,name
From: https://www.cnblogs.com/fuqian/p/17285744.html

相关文章

  • Java使用IntelliJ IDEA配置Maven并管理一个webapp项目
    1、下载并安装Mavenapache官网地址:http://maven.apache.org/download.cgips:maven的使用是基于JDK的,所以电脑必须有JDK解压到文件夹,并配置环境变量。1、MAVEN_HOME,地址为maven的地址2、path,地址为%MAVEN_HOME%\binwin+r输入cmd进终端,输入mvn-v测试maven是否安装成功修改maven......
  • Java使用IntelliJ IDEA创建JavaWeb应用程序并配置Tomcat
    1、创建JavaWeb程序创建一个JavaEE项目,选择Web应用程序。创建好后结果如下2、添加Tomcat服务器首先在官网下载Tomcat对应的操作系统版本。https://tomcat.apache.org/右上角添加Tomcat服务器在服务器里选择本地的Tomcat地址,其他的默认。在部署里点击加号,选择Artifact工件,增加web......
  • 阿里JAVA开发规范整理
    一、命名风格【强制】类名使用UpperCamelCase风格,必须遵从驼峰形式,但以下情形例外:DO/BO/DTO/VO/AO正例:MarcoPolo/UserDO/XmlService/TcpUdpDeal/TaPromotion反例:macroPolo/UserDo/XMLService/TCPUDPDeal/TAPromotion【强制】方法名、参数名、......
  • java 实现 dbf 操作
    <--依赖dbf-><dependency><groupId>com.github.albfernandez</groupId><artifactId>javadbf</artifactId><version>1.13.2</version></dependency>pack......
  • Java SpringBoot Test 单元测试中包括多线程时,没跑完就结束了
    如何阻止JavaSpringBootTest单元测试中包括多线程时,没跑完就结束了使用CountDownLatchCountDownLatch、CyclicBarrier使用区别多线程ThreadPoolTaskExecutor应用JavaBasePooledObjectFactory对象池化技术@SpringBootTestpublicclassPoolTest{@Test......
  • java笔记(this,super,override,instanceof,static)
    super关键字的一些注意事项子类在执行构造方法时,如果显式使用super()显式调用父类构造方法,则该调用必须放代码块在第一行super必须出现在子类的方法或者构造方法中使用this()显示调用构造方法,则该调用必须放在代码块第一行由于第一条和第三条限制,super和this不能同时调用构造......
  • 【Java 并发】【八】【Atomic】【二】AtomicInteger、AtomicBoolean原理
    1 前言这节我们从AtomicInteger这个比较简单的原子类开始,来看看AtomicInteger的底层原理。2  实测样例对比线程安全性在说AtomicInteger的底层原理之前呢,我们先来看个例子感受下原子类:static修饰的共享变量,我们开启两个线程对共享变量进行10000次+1的操作2.1  Integer......
  • 如何用java校验SQL语句的合法性?(提供五种解决方案)
    方案一:使用JDBCAPI中提供的Statement接口的execute()方法要在Java中校验SQL语句的合法性,可以使用JDBCAPI中提供的Statement接口的execute()方法。这个方法会尝试执行给定的SQL语句,如果SQL语句不合法,则会抛出一个SQLException异常。因此,我们可以利用这个异常来判断SQL语句的合法......
  • java学习日记20230404-String类
    String类String对象用于保存字符串,也就是一组字符序列;字符串常量对象使用双引号包括起来的字符序列字符串的字符使用unicode字符编码,一个字符(不区分字母还是汉字)占用两个字节String常用的构造器:newString();newString(Stringoriginal);newString(char[]a);newString(char[]......
  • 更改我们在Javaweb的运行启动方式
    之前之前,我都是利用上面的Tomcat的三角符号进行启动的更改1、下载插件在idea界面的右上角的设置按钮,选中其中的Plugins选项:然后会弹出一个界面,选中右上方的Marketplace,然后在下面的搜索框里面搜索MavenHelper:下载它,然后重启IDEA2、使用插件运行web右键项目名称,选中其中......