1、distinct()
public static void distantTest() {
List<String> list = Arrays.asList("a","z","d","b","a","g");
List<String> collect = list.stream().distinct().collect(Collectors.toList());
collect.forEach(s -> System.out.println(s)); //结果:a,z,d,b,g
}
2、filter()
private static void testFilter() {
List<String> list = Arrays.asList("a","z","d","b","a","g");
List<String> stringList = list.stream().filter(str -> str.equals("a")).collect(Collectors.toList());
System.out.println(stringList); // 结果:[a, a]
}
3、map()
private static void testMap() {
List<String> list = Arrays.asList("a","z","d","b","a","g");
List<String> stringList = list.stream().map(str -> str + "123")
.collect(Collectors.toList());
System.out.println(stringList); //结果:[a123, z123, d123, b123, a123, g123]
}
4、sorted()
private static void testSorted() {
List<String> list = Arrays.asList("aw", "z", "d", "b", "ab", "g");
List<String> collect = list.stream().sorted().collect(Collectors.toList());
System.out.println(collect); //结果:[ab, aw, b, d, g, z]
List<String> collect1 = list.stream().sorted(Comparator.reverseOrder()).collect(Collectors.toList());
System.out.println(collect1); //结果:[z, g, d, b, aw, ab]
//注释:字段类型为Integer,可以进行正常的排序
}
5、limit()
private static void limitTest() {
List<String> list = Arrays.asList("a", "z", "d", "b", "a", "g");
List<String> collect = list.stream().limit(2).collect(Collectors.toList());
System.out.println(collect); //结果:[a, z]
}
6、skip()
private static void skipTest() {
List<String> list = Arrays.asList("a", "z", "d", "b", "a", "g");
List<String> collect = list.stream().skip(3).collect(Collectors.toList());
System.out.println(collect); //结果:[b, a, g]
}
7、forEach 和 forEachOrdered
private static void testForEach() {
//主要的区别在并行流的处理上
//输出的顺序不一定(效率更高)
Stream.of("AAA", "BBB", "CCC").parallel().forEach(s -> System.out.println("Output:" + s));
//输出的顺序与元素的顺序严格一致
Stream.of("AAA", "BBB", "CCC").parallel().forEachOrdered(s -> System.out.println("Output1:" + s));
}
Output:BBB
Output:CCC
Output:AAA
Output1:AAA
Output1:BBB
Output1:CCC
8、reduce
private static void testReduce() {
List<Integer> list = Arrays.asList(1, 2, 3, 4);
Integer sum = list.stream().reduce(5, Integer::sum);
System.out.println("sum == " + sum);//结果:15
Optional<Integer> reduce = list.stream().reduce(Integer::sum);
Integer integer = reduce.get();
System.out.println("integer===" + integer);//结果:10
list.stream().reduce(Integer::max).ifPresent(System.out::println);//结果:4
list.stream().reduce(Integer::min).ifPresent(System.out::println); //结果:1
list.stream().reduce((x, y) -> x > y ? x : y).ifPresent(System.out::println); //结果 :4
int accResult = Stream.of(1, 2, 3, 4)
.reduce(0, (acc, item) -> {
System.out.println("acc : " + acc);
acc += item;
System.out.println("item: " + item);
System.out.println("acc+ : " + acc);
System.out.println("--------");
return acc;
});
System.out.println("accResult: " + accResult);
}
acc : 0
item: 1
acc+ : 1
--------
acc : 1
item: 2
acc+ : 3
--------
acc : 3
item: 3
acc+ : 6
--------
acc : 6
item: 4
acc+ : 10
--------
accResult: 10
9、anyMatch()、allMatch()、noneMatch()
private static void testMatch() {
List<Integer> list = Arrays.asList(1, 1, 1, 1, 1, 1);
boolean b = list.stream().anyMatch(x -> x == 1);
System.out.println("b==="+b);//true 只要有一个匹配
boolean b1 = list.stream().allMatch(x -> x == 1);
System.out.println("b1==="+b1);//true 需要全部匹配
boolean b2 = list.stream().noneMatch(x -> x == 1);
System.out.println("b2==="+b2);//false 没有一个匹配
}