stream(流) 的基本使用
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
public class StreamMain {
public static void main(String[] args) {
List<User> userList = new ArrayList();
userList.add(new User("张1", 12, "男"));
userList.add(new User("张2", 20, "女"));
userList.add(new User("张3", 18, "男"));
userList.add(new User("张4", 24, "女"));
userList.add(new User("张5", 16, "男"));
userList.add(new User("张1", 12, "男"));
List<User> collect = userList.stream().filter(user -> user.getAge() == 18).collect(Collectors.toList());
System.out.println(collect);
userList.stream().distinct().forEach(System.out::println);
List<User> collect2 = userList.stream().limit(3).collect(Collectors.toList());
System.out.println(collect2);
List<User> collect3 = userList.stream().skip(2).collect(Collectors.toList());
System.out.println(collect3);
List<String> collect4 = userList.stream().map(User::getName).collect(Collectors.toList());
System.out.println(collect4);
List<String> words = Arrays.asList("People", "who", "don't","wan", "to","be","slaves");
List<String> collect6 = words.stream()
.map(x -> x.split(""))
.flatMap(Arrays::stream)
.collect(Collectors.toList());
System.out.println(collect6);
List<String> n1 = Arrays.asList("a","b","c");
List<String> n2 = Arrays.asList("1","2","3");
List<String[]> collect7 = n1.stream().flatMap(i -> n2.stream().map(j -> new String[]{i, j})) .collect(Collectors.toList());
collect7.stream().forEach(x-> System.out.println(x[0] + "," + x[1] ));
boolean anyMatch = userList.stream().anyMatch(x -> x.getAge() == 18);
System.out.println(anyMatch);
boolean noonMatch = userList.stream().noneMatch(x -> x.getAge() == 77);
System.out.println(noonMatch);
boolean b = userList.stream().allMatch(x -> x.getAge() != 99);
System.out.println(b);
Optional<User> any = userList.stream().findAny();
System.out.println(any);
Optional<User> first = userList.stream().findFirst();
System.out.println(first.toString());
List<Integer> nums = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
Integer sum = nums.stream().reduce(0, (x, y) -> x + y);
System.out.println(sum);
Integer sum2 = nums.stream().reduce(1, (x, y) -> x * y);
System.out.println(sum2);
}
}