Stream流常用操作

package com.neutron.java8.stream.demo;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * Stream常用操作
 * @author zhanght
 *
 */
public class StreamEg {
	/**
	 * collect方法
	 * 用途:collect(toList)方法由stream裏的值生成列表,及早操作運算
	 * Stream中的of方法使用一組初始值生成新的Stream
	 */
	public static void collectEG() {
		List<String> collected = Stream.of("a", "b", "c", "d").collect(Collectors.toList());
		System.out.println("result:" + collected);
		// result:[a, b, c, d]
	}
	
	/**
	 * map方法
	 * 用途:將一種類型值轉化爲另外一種類型,將一個流中的值轉換爲新的流
	 */
	public static void mapEG(){
		// java8的處理方式
		List<String> maped= Stream.of("a", "b", "c", "d")
					  .map(str -> str.toUpperCase())
					  .collect(Collectors.toList());
		System.out.println("java8 result:" + maped);
		//java8 result:[A, B, C, D]
		
		// java6和5處理方式
		String[] arrs = {"a", "b", "c", "d"};
		List<String> arrList = new ArrayList<>();
		for (String arr:arrs) {
			arrList.add(arr.toUpperCase());
		}
		System.out.println("java5,6 result:" + arrList);
		// java5,6 result:[A, B, C, D]
	}
	
	/**
	 * filter方法
	 * 用戶:遍歷數據並檢查其中的元素內容
	 */
	public static void filterEG(){
		// java5,6
		List<String> target56 = new ArrayList<>();
		for(String arr:Arrays.asList("1qwe", "sdf", "5wer")) {
			if (Character.isDigit(arr.charAt(0))) {
				target56.add(arr);
			}
		}
		System.out.println("java5,6 result:" + target56);
		// java5,6 result:[1qwe, 5wer]
		
		// java8
		List<String> target8 = Stream.of("1qwe", "sdf", "5wer")
				                     .filter(str -> Character.isDigit(str.charAt(0)))
				                     .collect(Collectors.toList());
		System.out.println("java8 result:" + target8);
		// java8 result:[1qwe, 5wer]
	}
	
	/**
	 * flatMap方法
	 * 作用:將多個Stream連接成一個Stream流
	 */
	public static void flatMapEG() {
		List<Integer> numbers8 = Stream.of(Arrays.asList(1, 2, 3), Arrays.asList(1, 4, 6))
										 .flatMap(numbers -> numbers.stream())
										 .collect(Collectors.toList());
		System.out.println("java8 result:" + numbers8);
		// java8 result:[1, 2, 3, 1, 4, 6]
	}
	
	public static void main(String[] args) {
//		collectEG();
//		mapEG();
//		filterEG();
		flatMapEG();
	}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章