天天看點

Java8新特性 Stream流式思想(二)

如何擷取Stream流

剛開始寫部落格,有一些不到位的地方,還請各位論壇大佬見諒,謝謝!

package cn.com.zq.demo01.Stream.test01.Stream;

import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper;

import java.io.Serializable;
import java.util.*;
import java.util.stream.Stream;

/*
*   java.util.stream.Stream<T> 是Java8新加入的流式接口
*       擷取一個流非常簡單 ,主要有以下幾種方式 :
*           1、所有的Collection集合都可以通過調用 預設方式 stream() 擷取Stream流。
*           2、擷取數組對應的流,使用 Stream接口的靜态方法 of() 進行擷取即可。
*           3、那Map集合呢? 他不是Collection接口的子接口。這裡我們可以采用以下兩種方式 :
*                分别通過Map集合的 keySet()方法 、values()方法擷取到Map集合對象的Stream流。
*                或者就是通過Map集合的entrySet方法擷取到Map集合的鍵值對,直接将鍵值對轉換為Stream流即可。
* */
public class Test03GetStream {

    public static void main(String[] args) {
//        把集合轉化為 Stream 流
        List<String> list = new ArrayList<>();
        Stream<String> streamA = list.stream();//這就将 List集合轉化為了 Stream流

        Set<String> hashSet = new HashSet<>();
        Stream<String> streamB = hashSet.stream();//把Set集合 轉換為 Stream 流

//        如何将Map集合轉換為 Stream流呢?
        Map<String,String> map = new HashMap<>();

//        Map集合轉換為Stream流的方法一
//        先擷取到鍵值把Map集合中的鍵存儲到set集合中 将鍵轉換為 Stream流

        Set<String> key = map.keySet();
        Stream<String> streamKey = key.stream();
        Collection<String> values = map.values();
        Stream<String> streamValue = values.stream();

//        Map集合轉換為Stream流的方式二
//        擷取鍵值對 通過 将鍵值對 轉換為流的方式
        Set<Map.Entry<String, String>> entries = map.entrySet();
        Stream<Map.Entry<String, String>> streamEntrySet = entries.stream();

//        如何将數組轉換為Stream 流呢?
        Stream<? extends Serializable> streamOf = Stream.of("張三", "李四", 1, "王五", "趙六", "田七", 2);

//        由于 Stream 接口的靜态方法 Of 的參數是一個 可變參數 是以 參數可以傳遞一個數組
        int []arr ={1,2,3,4,5,6,7,8,9,4,5};
        Stream<int[]> streamArr = Stream.of(arr);
    }
}