java8三次分组_Java8分组(groupingBy)1、分组,计数,排序
public class Java8Example1 {
public static void main(String[] args) {
List items = Arrays.asList(
"apple", "apple",
"orange", "orange", "orange",
"blueberry",
"peach", "peach", "peach", "peach"
);
// 分组,计数
Map result = items.stream()
.
upingBy(Function.identity(), unting()));
System.out.println(result);
Map finalMap = new LinkedHashMap<>();
// 排序
.sorted(Map.EntryparingByValue().reversed())
.forEachOrdered(e -> finalMap.Key(), e.getValue()));
groupby分组System.out.println(finalMap);
}
}
2、以下例⼦使⽤的类
public class Item {
private String name;
private int qty;
private BigDecimal price;
public Item() {
}
public Item(String name, int qty, BigDecimal price) {
this.name = name;
this.qty = qty;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getQty() {
return qty;
}
public void setQty(int qty) {
this.qty = qty;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
@Override
public String toString() {
return "Item{" +
"name='" + name + '\'' +
", qty=" + qty +
", price=" + price +
'}';
}
}
3、分组,计数,计算数量
public class Java8Example2 {
public static void main(String[] args) {
List items = Arrays.asList(
new Item("apple", 10, new BigDecimal(23.5)), new Item("apple", 20, new BigDecimal(32.5)), new Item("orange", 30, new BigDecimal(13.9)),
new Item("orange", 20, new BigDecimal(33.5)),
new Item("orange", 10, new BigDecimal(63.5)),
new Item("orange", 50, new BigDecimal(41.5)),
new Item("peach", 20, new BigDecimal(26.5)),
new Item("peach", 30, new BigDecimal(42.5)),
new Item("peach", 40, new BigDecimal(24.5)),
new Item("peach", 10, new BigDecimal(12.5))
);
// 分组,计数
Map counting = items.stream()
.upingBy(Item::getName, unting()));
System.out.println(counting);
/
/ 分组,计数,数量
Map sum = items.stream()
.upingBy(Item::getName, Collectors.summingInt(Item::getQty))); System.out.println(sum);
}
}
4、通过价格分组
public class Java8Example3 {
public static void main(String[] args) {
List items = Arrays.asList(
new Item("apple", 10, new BigDecimal(23.5)),
new Item("apple", 20, new BigDecimal(32.5)),
new Item("orange", 30, new BigDecimal(13.9)),
new Item("orange", 20, new BigDecimal(32.5)),
new Item("orange", 10, new BigDecimal(63.5)),
new Item("orange", 50, new BigDecimal(41.5)),
new Item("peach", 20, new BigDecimal(26.5)),
new Item("peach", 30, new BigDecimal(32.5)),
new Item("peach", 40, new BigDecimal(24.5)),
new Item("peach", 10, new BigDecimal(12.5))
);
// 分组
Map> groupByPriceMap = items.stream()
.
upingBy(Item::getPrice));
System.out.println(groupByPriceMap);
// 分组 转化List->Set
Map> result = items.stream()
.upingBy(Item::getPrice, Collectors.mapping(Item::getName, Set())));
System.out.println(result);
}
}
java8 先groupingBy 后map
Map> mapBanJI_UserNameList=list.stream().upin ...
Java8 stream 中利⽤ groupingBy 进⾏多字段分组求和
Java8的groupingBy实现集合的分组,类似Mysql的group by分组功能,注意得到的是⼀个map 对集合按照单个属性分组 case1: List items ...
乐字节-Java8新特性-接⼝默认⽅法之Stream流(下)
接上⼀篇:,下⾯继续接着讲Stream 5.流的中间操作 常见的流的中间操作,归为以下三⼤类:筛选和切⽚流操作.元素映射操作.元素排序操作: 操作 描述 ...
乐字节-Java8核⼼特性实战之Stream(流)
说起流,我们会想起⼿机 ,电脑组装流⽔线,物流仓库商品包装流⽔线等等.如果把⼿机 ,电脑,包裹看做最终结果的话,那么加⼯商品前的各种零部件就可以看做数据源,⽽中间⼀系列的加⼯作业操作,就可以看做流的处 ...
简洁⼜快速地处理集合——Java8 Stream(下)
上⼀篇⽂章我讲解 Stream 流的基本原理,以及它与集合的区别关系,讲了那么多抽象的,本篇⽂章我们开始实战,讲解流的各个⽅法以及各种操作 没有看过上篇⽂章的可以先点击进去学习⼀下 简洁⼜快速地处理集 ...
Java8初体验(⼆)Stream语法详解---符合⼈的思维模式,数据源--》stream-->;⼲什么事(具体怎么做,就交给Stream)--》聚合
Function.identity()是什么? // 将Stream转换成容器或Map Stream stream = Stream.of("I", & ...
java8(2)--- Stream API
1.简述 Java8中有两⼤最为重要的改变.第⼀个是 Lambda 表达式:另外⼀ 个就是 Stream API. Stream 是处理集合的抽象概念,它可以指定你希望对集合进⾏的操作,可以执⾏⾮常复 ...
Java8 新特性之集合操作Stream
Java8 新特性之集合操作Stream Stream简介 Java 8引⼊了全新的Stream API.这⾥的Stream和I/O流不同,它更像具有Iterable的集合类,但⾏为和集合类⼜有所不同 ...
Lambda表达式例⼦
转 Lambda表达式例⼦ 1.Java8 新特性介绍 写java的同学对java8肯定知道 那么java8到底有哪些特性呢,总结如下: Lambda表达式 函数式接⼝ Stream Optional ...
随机推荐
【笔记】js获取当前点击元素的索引
以前⽤jq 做过图⽚切换 滑动之类的特效现在想⽤js 试试是怎么⼀回事 jq图⽚切换的思路是⽤index()函数获取当前点击的按钮的索引然后根据索引值将对应索引的图⽚显⽰出来 于是查了⼀下js 是如何 ...
Property() 与 v() 差异及⽰例
linux笔记2.19
压缩⼀般使⽤ tar -cvzf /etc 寻⽂件 locate(快速查:新添加的得⽤updatedb更新后才能到) find: find . -name ...
c&num;语⾔简介
语⾔的历史:c,c++,java,c#, c语⾔最早,c++语⾔复杂,⽽java把其中难的⼀部分去掉,也成为c--,⽽c#早期类似java. c#简单⾼效,并且与web结合. C#的运⾏环境是 ...
[Oracle维护⼯程师⼿记&rsqb;为什么flashback 的时候既需要 flashback log ,⼜需要 archive log?
为什么flashback 的时候既需要 flashback log ,⼜需要 archive log 呢? 如果数据库的活动不是很频繁,可以看到,其flashback log 是⽐较⼩的.那么是通过怎 ...
⽤foobar进⾏码率转换 适⽤与sacd-r转成低码率
之前下载了不少⾼清⾳频,有⿊胶转录的也有母带⽂件.这些⾼清⾳频⼤都是24bit,采样率96khz或者88.2khz或者更⾼.⽽我想将部分精品专辑刻录成cd.⾸先我需要将这些⽂件转换为16bit,44. ...
mosh
mosh 是⼀款使⽤ UDP 连接 C/S 的终端⼯具, 服务器只需安装好 mosh 套件, 并启动 SSH 服务, 等待 Client 连接即可. Client (mosh-client) 连接时, ...
导⼊numpy时,出错怎么解决?
在linux中导⼊numpy时出错,出现如下图所⽰的问题,采⽤更新版本的问题并未解决, 解决⽅法如下:进⼊⽂件夹中,删除其中的numpy⽂件夹,其他的⽂件夹不动,然后重新安装numpy即可
python第⼗六天&comma;昨天来晚了&comma;作业终于完成了
作业 1: 员⼯信息表程序,实现增删改查操作 可进⾏模糊查询,语法⾄少⽀持下⾯3种: select name,age from staff_table where age > 22 select ...
android onSaveInstance⽅法
为什么需要⽤到Activity状态保存, 如何⽤ ? 1)我们希望当前的Activity中的信息不会因为Activity状态的改变,⽽丢失.⽐如横竖屏的切换,突然来了个电话. 2) 借助Activit ...
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论