Java8集合及Stream操作
来源:互联网 发布:oracle网络 编辑:程序博客网 时间:2024/03/29 14:54
集合、流Stream操作测试:
import java.util.Arrays;import java.util.List;import java.util.Map;import java.util.stream.Collectors;import java.util.stream.Stream;public class CollectionOperation { //array convert stream @Test public void testStr2Stream() { //skuId1,num;skuId2,num String skuNum = "10001,1;10002,2"; Stream<String> stream = Arrays.stream(skuNum.split(";")); stream.forEach(System.out::println); } //stream flatMap @Test public void testStreamFlatMap() { //skuId1,num;skuId2,num String skuNum = "10001,1;10002,2"; Arrays.stream(skuNum.split(";")) .flatMap(str -> Arrays.stream(str.split(","))) .forEach(System.out::println); } // stream map @Test public void testStreamMap() { //skuId1,num;skuId2,num String skuNum = "10001,1;10002,2"; Arrays.stream(skuNum.split(";")) .map(str -> str.split(",")) .forEach(arr -> System.out.println(Arrays.toString(arr))); } // string stream map Object @Test public void testStr2OrderSkuInfo() { //skuId1,num;skuId2,num String skuNum = "10001,1;10002,2"; List<OrderSkuInfo> skuInfoStream = Arrays.stream(skuNum.split(";")) .map(str -> str.split(",")) .map(arr -> new OrderSkuInfo(Long.valueOf(arr[0]), Integer.valueOf(arr[1]))) .collect(Collectors.toList()); System.out.println(skuInfoStream); } // string stream convert Map Collection @Test public void testStrConvertMap() { //skuId1,num;skuId2,num List<String> bookOrderList = Arrays.asList("10001,1;10002,2"); Map<Long, OrderSkuInfo> skuInfoMap = extractOrderSkuInfo2(bookOrderList); System.out.println(skuInfoMap); } // 使用java8 api 将固定格式字符串转为Map结构 private Map<Long, OrderSkuInfo> extractOrderSkuInfo2(List<String> bookOrderList) { //k->v: 实物子单skuId -> OrderSkuInfo Map<Long, OrderSkuInfo> map = bookOrderList.stream() .flatMap(skuInfo -> Arrays.stream(skuInfo.split(";"))) .map(skuInfo -> skuInfo.split(",")) .collect(Collectors.toMap( arr -> Long.valueOf(arr[0]), arr -> new OrderSkuInfo(Long.valueOf(arr[0]), Integer.valueOf(arr[1])), (oldValue, newValue) -> new OrderSkuInfo(oldValue.getSkuId(), oldValue.getQuantity() + newValue.getQuantity())) ); return map; } static class OrderSkuInfo { private long skuId; private int quantity; public OrderSkuInfo(long skuId, int quantity) { this.skuId = skuId; this.quantity = quantity; } public long getSkuId() { return skuId; } public void setSkuId(long skuId) { this.skuId = skuId; } public int getQuantity() { return quantity; } public void setQuantity(int quantity) { this.quantity = quantity; } @Override public String toString() { return "OrderSkuInfo{" + "skuId=" + skuId + ", quantity=" + quantity + '}'; } }}
阅读全文
0 0
- Java8集合及Stream操作
- Java8 Stream操作
- java8 stream 操作
- Java8的Stream操作
- Java8 Stream流操作
- java8 Stream流操作介绍
- Java8 Stream 基本操作示例
- 【JAVA8】stream 流相关操作
- JAVA8 Function及Stream编程
- Java8利用stream对集合的复杂操作(顺序处理,并行处理)
- 集合之Stream操作集合
- Java8 Stream的终止操作使用示例
- Java8 常用的Stream流操作
- Java8 Stream
- java8 stream
- Java8 Stream
- Java8 Stream
- Java8:Stream
- java多线程&线程池
- vue-音频组件
- 2017年9月20日22:45:58
- VS2015+OpenCV2.4.9+Qt5.6安装配置
- Windows上Python2和Python3兼容的办法
- Java8集合及Stream操作
- java设计模式---抽象工厂模式
- 4.定义一个可以接收三个数字的函数,函数体内返回三个数字中最大的数字
- Iterator和ListIterator区别
- Java学习5:this关键字
- 【Android API】3.ViewPager的实现原理和源码分析
- Spring Boot整合集成StringRedisTemplate的简单记录
- JDBC连接数据库的开发流程
- 测试输入框常用特殊字符类别