1. 数据源的获取
ArrayList<Integer> list=new ArrayList<>();
Collections.addAll(list,0,1,2,3,4,5,6,7,8,9,10);
Stream<Integer> stream = list.stream();
Stream<Integer> parallelStream = list.parallelStream();
Integer[] array={0,1,2,3,4,5,6,7,8,9,10};
Stream<Integer> stream1 = Arrays.stream(array);
2. 最终操作
.
private static void finalOperatorCollect() {
Stream<Integer> stream = getDataSource().stream();
}
private static void finalOperatorReduce() {
Stream<Integer> stream = getDataSource().stream();
Integer sum = stream.reduce((n1, n2) -> n1 + n2).get();
System.out.println(sum);
}
private static void finalOperatorCount() {
Stream<Integer> stream = getDataSource().stream();
long count = stream.count();
System.out.println(count);
}
private static void finalOperatorForEach() {
Stream<Integer> stream = getDataSource().stream();
stream.forEach(System.out::println);
}
private static void finalOperatorMax() {
Stream<Integer> stream = getDataSource().stream();
Integer max = stream.max(Integer::compareTo).get();
System.out.println(max);
}
private static void finalOperatorMin() {
Stream<Integer> stream = getDataSource().stream();
Integer max = stream.min(Integer::compareTo).get();
System.out.println(max);
}
private static void finalOperatorMatching() {
Stream<Integer> stream = getDataSource().stream();
boolean ret1 = stream.allMatch(n -> n > 0);
System.out.println(ret1);
}
private static void finalOperatorFind() {
Stream<Integer> stream = getDataSource().stream();
}
3. 中间操作
private static void processOperationMap(){
Stream<Integer> stream = getDataSource().stream();
stream.distinct().limit(10).map(e->e*10+"!").forEach(System.out::println);
}
private static void processOperationSkip() {
Stream<Integer> stream = getDataSource().stream();
stream.skip(10).forEach(System.out::println);
}
private static void processOperationLimit() {
Stream<Integer> stream = getDataSource().stream();
stream.limit(10).forEach(System.out::println);
}
private static void processOperationSorted() {
Stream<Integer> stream = getDataSource().stream();
stream.sorted().forEach(System.out::println);
/ stream.sorted((n1,n2)->n2-n1).forEach(System.out::println);
}
private static void processOperationDistinct() {
Stream<Integer> stream = getDataSource().stream();
stream.distinct().forEach(System.out::println);
}
private static void processOperationFilter() {
Stream<Integer> stream = getDataSource().stream();
stream.filter(n -> n > 50).forEach(System.out::println);
}
private static void flatMapTest() {
String[] strs = { "hello", "world" };
Arrays.stream(strs).map(str -> str.split(""))
.flatMap(Arrays::stream)
.distinct()
.forEach(System.out::println);
}
private static void mapToIntTest() {
List<String> list = new ArrayList<>();
Collections.addAll(list, "lily", "lucy", "Uncle wang", "Jim", "xiaoming", "hanmeimei", "xiaoxiaohui", "xiaohuihui", "xiaobai");
int max = list.stream().mapToInt(String::length).max().getAsInt();
int min = list.stream().mapToInt(String::length).min().getAsInt();
double average = list.stream().mapToInt(String::length).average().getAsDouble();
IntSummaryStatistics intSummaryStatistics = list.stream().mapToInt(String::length).summaryStatistics();
System.out.println(intSummaryStatistics);
System.out.println("最大值: " + intSummaryStatistics.getMax());
System.out.println("最小值: " + intSummaryStatistics.getMin());
System.out.println("平均值值: " + intSummaryStatistics.getAverage());
System.out.println("和: " + intSummaryStatistics.getSum());
System.out.println("数量: " + intSummaryStatistics.getCount());
}