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();
	}

}

猜你喜欢

转载自blog.csdn.net/neutron129/article/details/51478880