java
package xyz.jangle.stream;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
/**
* java 8 Stream 基本用法
* @author Administrator
*
*/
public class MainTestAll {
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("AA11");
list.add("CC33");
list.add("BB22");
list.add("DD44");
list.add("EE55");
// 1. 过滤(Filtering) 使用 filter 方法可以轻松地从集合中筛选出满足特定条件的元素。
List<String> collect = list.stream().filter(p -> p.startsWith("A")).collect(Collectors.toList());
collect.forEach(a -> System.out.println(a));
// 2. 映射(Mapping) map 方法可以将流中的每个元素转换或映射为另一个元素。
List<Integer> collect2 = list.stream().map(String::length).collect(Collectors.toList());
// List<Integer> collect2 = list.stream().map(p -> p.length()).collect(Collectors.toList());
collect2.forEach(a -> System.out.println(a));
//3. 排序(Sorting) 使用 sorted 方法可以对流中的元素进行排序。
System.out.println("排序前:");
list.stream().forEach(a -> System.out.println(a));
List<String> collect3 = list.stream().sorted().collect(Collectors.toList());
System.out.println("****************");
System.out.println("排序后");
collect3.stream().forEach(a -> System.out.println(a));
//4. 匹配(Matching) anyMatch, allMatch, 和 noneMatch 方法用于检查流中的元素是否匹配给定的条件。
boolean anyMatch = list.stream().anyMatch(p -> p.startsWith("A"));
System.out.println("存在任意元素,该元素以A开头:"+anyMatch);
boolean allMatch = list.stream().allMatch(p -> p.length() ==4);
System.out.println("所有元素的长度=4:"+allMatch);
boolean noneMatch = list.stream().noneMatch(p -> p.startsWith("P"));
System.out.println("没有任意元素是以P开头的:"+noneMatch);
List<Integer> list2 = new ArrayList<Integer>();
list2.add(1);
list2.add(2);
list2.add(3);
list2.add(4);
//5.归约(Reduction)reduce 方法可以将流中的元素归约成一个值,如求和、求积等。
Integer sum = list2.stream().reduce(0,Integer::sum);
System.out.println("规约:"+sum);
//6.收集流
List<Integer> collect4 = list2.stream().collect(Collectors.toList());
System.out.println("收集流:"+collect4.size());
//7.数值流 可以使用 IntStream, LongStream, DoubleStream 来处理原始数值类型的数据。
IntStream intStream = list.stream().mapToInt(String::length);
int sum2 = intStream.sum();
System.out.println("数值流"+sum2);
}
}
1、filter 过滤、
2、map 映射、转换、
3、sorted 排序、
4、allMatch 全部匹配、 返回boolean
4、anyMatch 任意匹配、返回boolean
4、noneMatch 全部不匹配 返回boolean