package ---;

import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors; /**
* Created by zhugenqi on 2018/9/18 0018.
*/
class ListToMap {
private static List<Apple> appleList = new ArrayList<>();//存放apple对象集合; public static void main(String[] args) throws Exception {
Apple apple1 = new Apple(1, "苹果1", new BigDecimal("3.25"), 10);
Apple apple12 = new Apple(1, "苹果2", new BigDecimal("1.35"), 20);
Apple apple13 = new Apple(2, "苹果13", new BigDecimal("1.35"), 20);
Apple apple2 = new Apple(2, "香蕉", new BigDecimal("2.89"), 30);
Apple apple3 = new Apple(3, "荔枝", new BigDecimal("9.99"), 40);
appleList.add(apple1);
appleList.add(apple12);
appleList.add(apple13);
appleList.add(apple2);
appleList.add(apple3);
toMap(appleList);
} private static void toMap(List<Apple> appleList) throws Exception {
//转化为map,并且对 key 去重
Map<Integer, Apple> AppleMap = appleList.stream()
.collect(Collectors
.toMap(Apple::getId, apple -> apple, (k1, k2) -> k1)
);
//根据分组
Map<Integer, List<Apple>> AppleMap02 = appleList.stream().collect(Collectors.groupingBy(Apple::getId)); //筛选出name为香蕉的code
List<Apple> AppleMap03 = appleList.stream().filter(apple -> apple.getName().equals("香蕉")).collect(Collectors.toList()); //分组求和
BigDecimal TotalMoney = appleList.stream().map(Apple::getMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal sum = appleList.stream().filter(apple -> apple.getName().equals("香蕉")).map(Apple::getMoney).reduce(BigDecimal.ZERO,BigDecimal::add); //算出name的种类数量,并转为set
Set<String> names = appleList.stream().map(Apple::getName).collect(Collectors.toSet());
System.out.println("主键去从");
System.out.println(AppleMap);
System.out.println("分组");
for (Map.Entry entry : AppleMap02.entrySet()) {
System.out.print(entry.getKey() + " ");
List list = (List) entry.getValue();
for (Object object : list) {
if (list.indexOf(object) > 0) {
System.out.print(" ");
}
System.out.println(object);
}
}
System.out.println("过滤");
System.out.println(AppleMap03); System.out.println("求和");
System.out.println("总价格 :" + TotalMoney); System.out.println("分组求和");
System.out.println("总数量 : " + sum); System.out.println("输出种类");
System.out.println("种类 : "+names);
}
}

List的分组,求和,过滤操作的更多相关文章

  1. oracel sql分组求和过滤条件

  2. LINQ简明教程:数据排序、分组、过滤

    LINQ可以对很多数据源进行查询操作,比如数据库.数组(array).链表(list).XML文件等.在本文中,我将从数组中提取数据,这些数据是10个最受欢迎的国家.有一个类叫Countries,有c ...

  3. Oracle分析函数及常用函数: over(),rank()over()作用及用法--分区(分组)求和& 不连续/连续排名

    (1)   函数:  over()的作用及用法:    -- 分区(分组)求和. sum() over( partition by column1 order by column2 )主要用来对某个字 ...

  4. 【SQL必知必会笔记(3)】SELECT语句的WHERE子句数据过滤操作

    上个笔记主要介绍了利用SELECT语句检索单个/多个/所有列,并利用DISTINCT关键字检索具有唯一性的值.利用LIMIT/OFFSET子句限制结果:以及利用ORDER BY子句排序检索出的数据,主 ...

  5. MySQL单表查询(分组-筛选-过滤-去重-排序)

    目录 一:单表查询 1.单表查询(前期准备) 2.插入记录(写入数据) 3.查询关键字 二:查询关键字之where 1.查询id大于等于3小于等于6的数据 2.查询薪资是20000或者18000或者1 ...

  6. Oracle函数over(),rank()over()作用及用法--分区(分组)求和& 不连续/连续排名

    (1)   函数:  over()的作用及用法:    -- 分区(分组)求和. RANK ( ) OVER ( [query_partition_clause] order_by_clause )D ...

  7. 如何对Backbone.Collection进行过滤操作

    首先我想说的是这篇文章的题目起的很怪,因为我不知道起个什么名字比较好.渲染列表是我们应用中最常见的操作了吧,在运用Backbone的应用中,我们一般会把列表作为一个Collcetion,然后指定一个V ...

  8. Thinkphp入门 二 —空操作、空模块、模块分组、前置操作、后置操作、跨模块调用(46)

    原文:Thinkphp入门 二 -空操作.空模块.模块分组.前置操作.后置操作.跨模块调用(46) [空操作处理] 看下列图: 实际情况:我们的User控制器没有hello()这个方法 一个对象去访问 ...

  9. linq分组求和_实体类和datatable

    1.数据分组求合,分别用的实体类以及datatable来分组求合,还有分组求和之后的如何取值 //实体类版本 List<ProgramTimeModel> TotalAllList = G ...

随机推荐

  1. H5网页后在返回到微信公众平台自定义菜单

    <p class="success">订阅成功!</p> <div class="btn" @click="finish ...

  2. 微信公众号开发 [05] 微信支付功能开发(网页JSAPI调用)

    1.微信支付的流程 如下三张手机截图,我们在微信网页端看到的支付,表面上看到的是 "点击支付按钮 - 弹出支付框 - 支付成功后出现提示页面",实际上的核心处理过程是: 点击支付按 ...

  3. xshell连接虚拟机ubuntu

    在ubuntu界面,打开终端terminal,输入: ifconfig 出现如下界面: fb993608316@ubuntu:/$ ifconfig eth0 Link encap:Ethernet ...

  4. 让多个HTML页面 使用 同一段HTML代码

    需求背景 一个网站有多个网页:一个网页,可以分为很多部分,举个例子,下面是一个特别简单的网页结构:    一般情况下,footer都是用于标识网站的相关信息(备案.联系方式.制作方),每一个页面都是相 ...

  5. 【学习总结】GirlsInAI ML-diary day-9-dict字典

    [学习总结]GirlsInAI ML-diary 总 原博github链接-day9 认识dict字典 新的数据类型dict. dict全称dictionary,在其他语言中也称为map,使用键-值( ...

  6. 【学习总结】GirlsInAI ML-diary day-7-数据类型转换

    [学习总结]GirlsInAI ML-diary 总 原博github链接-day7 回顾之前见到的常见数据类型 int 整数 float 浮点数 bool 布尔值 string 字符串 ... 1- ...

  7. idea2018.3.5永久破解教程

    视频教程地址: http://v.youku.com/v_show/id_XNDEwNDU1NjQ4MA==.html 配套笔记: ①修改配置文件 -Xms128m -Xmx750m -XX:Rese ...

  8. Starter pom

    以下图片是引用书籍内容: 比如你在用boot写一个web项目,在maven中你会导入: <!-- 导入spring boot的web支持 --> <dependency> &l ...

  9. Sublime怎么安装Package control组件

    Sublime怎么安装Package control组件 藏色散人 藏色散人 2018-11-26 14:30:51 原创 Sorry, your browser does not support e ...

  10. opencv 边缘检测原理

    只是实现一下,暂不考虑效率 import cv2 as cv import numpy as np import math # 从源码层面实现边缘检测 img = cv.imread('../imag ...