111 lines
2.7 KiB
Java
111 lines
2.7 KiB
Java
|
package cn.bunny.stream;
|
|||
|
|
|||
|
import java.util.ArrayList;
|
|||
|
import java.util.Collection;
|
|||
|
import java.util.List;
|
|||
|
import java.util.concurrent.ThreadLocalRandom;
|
|||
|
import java.util.stream.Stream;
|
|||
|
|
|||
|
public class StreamExample02 {
|
|||
|
public static void main(String[] args) {
|
|||
|
Stream<Object> stream = new ArrayList<>() {{
|
|||
|
add(1);
|
|||
|
add(2);
|
|||
|
add(2);
|
|||
|
add(3);
|
|||
|
add(3);
|
|||
|
add(4);
|
|||
|
}}.stream();
|
|||
|
|
|||
|
// 去重操作
|
|||
|
stream.distinct().forEach(System.out::println);
|
|||
|
|
|||
|
stream = new ArrayList<>() {{
|
|||
|
add(1);
|
|||
|
add(2);
|
|||
|
add(2);
|
|||
|
add(3);
|
|||
|
add(3);
|
|||
|
add(4);
|
|||
|
}}.stream();
|
|||
|
|
|||
|
// 过滤器,满足值为2的筛选
|
|||
|
stream.filter(x -> x.equals(2)).forEach(System.out::println);
|
|||
|
|
|||
|
stream = new ArrayList<>() {{
|
|||
|
add(1);
|
|||
|
add(2);
|
|||
|
add(2);
|
|||
|
add(3);
|
|||
|
add(3);
|
|||
|
add(4);
|
|||
|
}}.stream();
|
|||
|
|
|||
|
// 选择序列个数为3
|
|||
|
stream.limit(3).forEach(System.out::println);
|
|||
|
|
|||
|
stream = new ArrayList<>() {{
|
|||
|
add(1);
|
|||
|
add(2);
|
|||
|
add(2);
|
|||
|
add(3);
|
|||
|
add(3);
|
|||
|
add(4);
|
|||
|
}}.stream();
|
|||
|
|
|||
|
// 映射,可以修改原本的类型
|
|||
|
stream.map(Object::toString).forEach(System.out::println);
|
|||
|
|
|||
|
stream = new ArrayList<>() {{
|
|||
|
add(1);
|
|||
|
add(2);
|
|||
|
add(2);
|
|||
|
add(3);
|
|||
|
add(3);
|
|||
|
add(4);
|
|||
|
}}.stream();
|
|||
|
|
|||
|
// 跳过前两个数
|
|||
|
stream.skip(2).forEach(System.out::println);
|
|||
|
|
|||
|
stream = new ArrayList<>() {{
|
|||
|
add(1);
|
|||
|
add(2);
|
|||
|
add(2);
|
|||
|
add(3);
|
|||
|
add(3);
|
|||
|
add(4);
|
|||
|
}}.stream();
|
|||
|
|
|||
|
// 不会使元素数据、类型产生改变
|
|||
|
stream.peek(x -> ThreadLocalRandom.current().nextInt(100)).limit(10).forEach(System.out::println);
|
|||
|
|
|||
|
stream = new ArrayList<>() {{
|
|||
|
add(1);
|
|||
|
add(2);
|
|||
|
add(2);
|
|||
|
add(3);
|
|||
|
add(3);
|
|||
|
add(4);
|
|||
|
}}.stream();
|
|||
|
|
|||
|
// 从小到大排序
|
|||
|
stream.sorted().forEach(System.out::println);
|
|||
|
|
|||
|
// 提供重载方法
|
|||
|
// stream.sorted(Comparator.comparing(Object::toString)).forEach(System.out::println);
|
|||
|
|
|||
|
ArrayList<Integer> list = new ArrayList<>() {{
|
|||
|
add(1);
|
|||
|
add(2);
|
|||
|
add(2);
|
|||
|
add(3);
|
|||
|
add(3);
|
|||
|
add(4);
|
|||
|
}};
|
|||
|
List<ArrayList<Integer>> arrayListList = List.of(list);
|
|||
|
|
|||
|
// 扁平化数组
|
|||
|
arrayListList.stream().flatMap(Collection::stream).forEach(System.out::println);
|
|||
|
}
|
|||
|
}
|