1. 程式人生 > >Java8集合及Stream操作

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