Java8集合及Stream操作
集合、流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 +
'}';
}
}
}
相關推薦
Java8集合及Stream操作
集合、流Stream操作測試: import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; impor
list列表 tuple元組 range操作 dict字典 set集合 及相關操作
list列表 1. 什麼是列表 定義: 能裝物件的物件 在python中使用[]來描述列表, 內部元素用逗號隔開. 對資料型別沒有要求 列表存在索引和切片. 和字串是一樣的. 2. 相關的增刪改查操作(重點) 新增: 1. append() 追加 2. insert(位置,
Java8利用stream對集合的複雜操作(順序處理,並行處理)
又是一個很平常的週六,習慣性地來到公司,中午看了會Java8實戰,發現其中講到Stream實現集合的複雜操作,於是自己動手寫了個Demo,並測試了下效率。 結果是並行處理的效率遠遠高於順序處理。可能與我在公司用的電腦有關(我用的是8核)。 話不多說,直接放程式碼: pa
2020了你還不會Java8新特性?方法引用詳解及Stream 流介紹和操作方式詳解(三)
方法引用詳解 方法引用: method reference 方法引用實際上是Lambda表示式的一種語法糖 我們可以將方法引用看作是一個「函式指標」,function pointer 方法引用共分為4類: 類名::靜態方法名 引用名(物件名)::例項方法名 類名::例項方法名 (比較不好理解,個地方呼叫的方
圖解集合7:紅黑樹概念、紅黑樹的插入及旋轉操作詳細解讀
集合 得到 2個 排序。 數據流 except boolean 修正 split 原文地址http://www.cnblogs.com/xrq730/p/6867924.html,轉載請註明出處,謝謝! 初識TreeMap 之前的文章講解了兩種Map,分別是HashMa
Python學習日記(2)Python內建集合及操作
進行 添加 依然 修改 lis ever 原來 合並 and 列表 列表是零個或多個Python對象的一個序列,這些對象通常稱之為項; 列表示例: [] #An empty list ["test"] #A list of one string
Java8集合中的Lambda表示式 ------與LambdaJ(集合操作)區別開來
Lambdas表示式是Java 8的主題,在Java平臺上我們期待了很久。但是,如果如果我們不在集合中使用它的話,就損失了很大價值。把現有介面遷移成為lambda風格介面的問題已經通過default methods,也就是defender methods解決了。在這篇文章裡面我們來看一看Java集合
初識Java8的lambda表示式及Stream API
首先,引入一個模擬的專案,公司要求將年齡35歲以上的人員過濾出來。 將人員資料建模,有姓名、年齡、收入: public class Employee { private String name; private int age; private double salary; …
java8 集合神操作
1 public class StreamUtils { 2 3 4 5 private static final List<Integer> listInteger = Lists.newArrayList(1, 2, 3, 4, 5, 6, 3,
Stream操作集合
java8新增了Stream,intStream,LongStream,DoubleStream等流式API,這些API代表序列和並行聚集操作的元素,Stream是一個通用流介面,而intStream,LongStream,DoubleStream代表元素型別為
【JAVA秒會技術之Java8新特性】利用流快速處理集合的常見操作
例子1:對集合進行排序 List<Integer> list = Lists.newArrayList(1,1,2,2,5,3,4,6,6,5,2,7); list.sort(null); list.forEach(e -> System.out.prin
Python元組、列表、集合及列表去重操作
1.元組、列表、集合元組(tuple)小括號、可以有相同元素、不可改只能讀列表(list)中括號、可以有相同元素、可以進行增刪改查集合(set)大括號、不存放相同元素2.列表去重操作對列表進行去重操作1:程式碼#coding = utf-8 a = [11,22,33,11,
Java中的集合關係圖及常見操作
下面是一張下載的Java中的集合型別的繼承關係圖,便於正確的理解和使用相應的集合型別。 有序否 允許元素重複否 Collection 否 是 List 是 是 Set AbstractSet 否 否 HashSet
Java8系列--Java Stream進階篇(流的操作)
1 流的操作的特點 1.1 流的操作的核心機制 流的操作區別於傳統的集合操作的一大特點是,在Java 8中,流的操作是通過將外部迭代轉向內部迭代來實現的。 在Java 8 Stream API中,流的操作實際上相當於對資料進行一系列的”篩選”操
Redis支持的五種數據類型及相應操作:String(字符串),Hash(哈希),List(列表),Set(集合)及zset(sorted set:有序集合)
list 支持 哈希 keys 當前 zset 存在 key-value second key 命令(key命令:用於管理 redis 的key)相應操作: key 命令 說明 del key [key...] dump key 序列化給定 key
Java8中的Stream API之Stream的背景及使用詳解
摘要: Stream是Java8的一大亮點,是對容器物件功能的增強,它專注於對容器物件進行各種非常便利、高效的 聚合操作(aggregate operation)或者大批量資料操作。Stream API藉助於同樣新出現的Lambda表示式,極大的提高程式設計效率和程式可讀性
Java8中的Stream API詳解:Stream的背景及使用
摘要: Stream是Java8的一大亮點,是對容器物件功能的增強,它專注於對容器物件進行各種非常便利、高效的 聚合操作(aggregate operation)或者大批量資料操作。Stream API藉助於同樣新出現的Lambda表示式,極大的提
Java8系列--Java Stream入門篇(流的操作)
1 Stream介面 1.1 介面情況 java.util.stream介面下共有DoubleStream、LongStream、IntStream、Stream四個介面,如下圖所示: 1.2 流的分類和使用 其中,Stream介面定義了
Java8集合類庫的批量資料操作
第三章:Java集合類庫的批量資料操作 引入批量資料操作的目的是應用lambda函式來實現包含並行操作在內的多種資料處理功能,而支援並行資料操作是其關鍵內容。這個並行操作是在Java7 java.util.concurrency的Fork/Join機制上實現的。 批量操作介
java操作mongodb指定集合及索引建立spring boot
package com.paic.aims.farmer.farmerinfo.dto; import io.swagger.annotations.ApiModel; import io.swagg