package com.dubbo.provider;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
/**
* java 8 stream
*
* @author HuTongfu
* @create 2017-09-12 22:47.
*/
public class Java8 {
public static void main(String[] args) {
// 1. Individual values
Stream<Object> stream = Stream.of("a", "b", "c");
// 2. Arrays
String[] strArray = new String[]{"a", "b", "c"};
stream = Stream.of(strArray);
stream = Arrays.stream(strArray);
// 3. Collections
List<String> list = Arrays.asList(strArray);
list.stream();
//4.数值流的构造
IntStream.of(new int[]{1, 2, 3}).forEach(System.out::println);
System.out.println("==========================================");
IntStream.range(1, 3).forEach(System.out::println);
System.out.println("==========================================");
IntStream.rangeClosed(1, 3).forEach(System.out::println);
System.out.println("==========================================");
//流转换为其它数据结构
String[] array = stream.toArray(String[]::new);
// List<String> collect = stream.collect(Collectors.toList());
// List<String> list2 = stream.collect(Collectors.toCollection(ArrayList::new));
//将list转换为指定格式字符串
String str = list.stream().map(e -> e.toUpperCase()).filter(e -> !e.equals("a")).collect(Collectors.joining(",")).toString();
System.out.println(str);
System.out.println("==========================================");
//平方数
List<Integer> nums = Arrays.asList(1, 2, 3, 4);
List<Integer> squareNums = nums.stream().
map(n -> n * n).
collect(Collectors.toList());
System.out.println(squareNums.toString());
//flatmap
Stream<List<Integer>> inputStream = Stream.of(
Arrays.asList(1),
Arrays.asList(2, 3),
Arrays.asList(4, 5, 6)
);
Stream<Integer> outputStream = inputStream.
flatMap((childList) -> childList.stream());
String string = outputStream.collect(Collectors.toList()).toString();
System.out.println(string);
//filter
Integer[] sixNums = {1, 2, 3, 4, 5, 6};
Integer[] evens =
Stream.of(sixNums).filter(n -> n % 2 == 0).toArray(Integer[]::new);
System.out.println(Arrays.asList(evens).toString());
List<String> collect = Stream.of("one", "two", "three", "four")
.filter(e -> e.length() > 3)
.peek(e -> System.out.println("Filtered value: " + e))
.map(String::toUpperCase)
.peek(e -> System.out.println("Mapped value: " + e))
.collect(Collectors.toList());
System.out.println(collect.toString());
// 字符串连接,concat = "ABCD"
String concat = Stream.of("A", "B", "C", "D").reduce("", String::concat);
System.out.println(concat);
// 求最小值,minValue = -3.0
double minValue = Stream.of(-1.5, 1.0, -3.0, -2.0).reduce(Double.MAX_VALUE, Double::min);
System.out.println(minValue);
// 求和,sumValue = 10, 有起始值
int sumValue = Stream.of(1, 2, 3, 4).reduce(0, Integer::sum);
System.out.println(sumValue);
// 求和,sumValue = 10, 无起始值
sumValue = Stream.of(1, 2, 3, 4).reduce(Integer::sum).get();
System.out.println(sumValue);
// 过滤,字符串连接,concat = "ace"
concat = Stream.of("a", "B", "c", "D", "e", "F").
filter(x -> x.compareTo("Z") > 0).
reduce("", String::concat);
System.out.println(concat);
}
}
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.Stream;
/**
* java 8 stream
*
* @author HuTongfu
* @create 2017-09-12 22:47.
*/
public class Java8 {
public static void main(String[] args) {
// 1. Individual values
Stream<Object> stream = Stream.of("a", "b", "c");
// 2. Arrays
String[] strArray = new String[]{"a", "b", "c"};
stream = Stream.of(strArray);
stream = Arrays.stream(strArray);
// 3. Collections
List<String> list = Arrays.asList(strArray);
list.stream();
//4.数值流的构造
IntStream.of(new int[]{1, 2, 3}).forEach(System.out::println);
System.out.println("==========================================");
IntStream.range(1, 3).forEach(System.out::println);
System.out.println("==========================================");
IntStream.rangeClosed(1, 3).forEach(System.out::println);
System.out.println("==========================================");
//流转换为其它数据结构
String[] array = stream.toArray(String[]::new);
// List<String> collect = stream.collect(Collectors.toList());
// List<String> list2 = stream.collect(Collectors.toCollection(ArrayList::new));
//将list转换为指定格式字符串
String str = list.stream().map(e -> e.toUpperCase()).filter(e -> !e.equals("a")).collect(Collectors.joining(",")).toString();
System.out.println(str);
System.out.println("==========================================");
//平方数
List<Integer> nums = Arrays.asList(1, 2, 3, 4);
List<Integer> squareNums = nums.stream().
map(n -> n * n).
collect(Collectors.toList());
System.out.println(squareNums.toString());
//flatmap
Stream<List<Integer>> inputStream = Stream.of(
Arrays.asList(1),
Arrays.asList(2, 3),
Arrays.asList(4, 5, 6)
);
Stream<Integer> outputStream = inputStream.
flatMap((childList) -> childList.stream());
String string = outputStream.collect(Collectors.toList()).toString();
System.out.println(string);
//filter
Integer[] sixNums = {1, 2, 3, 4, 5, 6};
Integer[] evens =
Stream.of(sixNums).filter(n -> n % 2 == 0).toArray(Integer[]::new);
System.out.println(Arrays.asList(evens).toString());
List<String> collect = Stream.of("one", "two", "three", "four")
.filter(e -> e.length() > 3)
.peek(e -> System.out.println("Filtered value: " + e))
.map(String::toUpperCase)
.peek(e -> System.out.println("Mapped value: " + e))
.collect(Collectors.toList());
System.out.println(collect.toString());
// 字符串连接,concat = "ABCD"
String concat = Stream.of("A", "B", "C", "D").reduce("", String::concat);
System.out.println(concat);
// 求最小值,minValue = -3.0
double minValue = Stream.of(-1.5, 1.0, -3.0, -2.0).reduce(Double.MAX_VALUE, Double::min);
System.out.println(minValue);
// 求和,sumValue = 10, 有起始值
int sumValue = Stream.of(1, 2, 3, 4).reduce(0, Integer::sum);
System.out.println(sumValue);
// 求和,sumValue = 10, 无起始值
sumValue = Stream.of(1, 2, 3, 4).reduce(Integer::sum).get();
System.out.println(sumValue);
// 过滤,字符串连接,concat = "ace"
concat = Stream.of("a", "B", "c", "D", "e", "F").
filter(x -> x.compareTo("Z") > 0).
reduce("", String::concat);
System.out.println(concat);
}
}