package com.leitao.demo.code;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.function.Consumer;
import java.util.function.IntFunction;
/**
* @Description: TODO
* @Author Leo
* @Date 2023/1/3
* @Version V1.0
**/
public class streamDemo3 {
public static void main(String[] args) {
ArrayList<String> strings = new ArrayList<>();
Collections.addAll(strings,"李1","范2宇","王3来","杨4亭","毛5培","马6云","大帅7");
//1、forEach 遍历
//Consumer的泛型:表示流中的数据类型
strings.stream().forEach(new Consumer<String>() {
@Override
//accept方法的形参s依次表示流里面的每一条数据
public void accept(String s) {
//方法体:对每一个数据的处理操作(打印)
System.out.println(s);
}
});
System.out.println("-------------------优化完-----------------");
strings.stream().forEach(s -> System.out.println(s));
System.out.println("===================华丽的分割线===================");
//2、count 统计
long count = strings.stream().count();
System.out.println(count);
System.out.println("===================华丽的分割线===================");
//3、toArray 收集流中的数据,放到数组中
//无参
Object[] objects = strings.stream().toArray();
System.out.println(Arrays.toString(objects));
System.out.println("===================华丽的分割线===================");
//有参
//IntFunction的泛型:具体类型的数组
/**
* toArray方法的参数的作用:负责创建一个指定类型的数据
* toArray方法的地测:回一次得到流里面的每一个数据,并把数据放到数组当中
* toArray方法的返回值:是一个装着流里面所有数据的数组
*/
String[] array = strings.stream().toArray(new IntFunction<String[]>() {
@Override
//apply方法的形参:流中数据的个数,要和数组的长度保持一致
//apply的返回值:具体类型的属虎
public String[] apply(int value) {
//方法体:就是创建数组
return new String[value];
}
});
System.out.println(Arrays.toString(array));
System.out.println("-------------------优化完-----------------");
//value数组长度 创建一个value长的指定类型的数组
String[] array1 = strings.stream().toArray(value -> new String[value]);
System.out.println(Arrays.toString(array1));
}
}
4、java stream流终结方法详解
最新推荐文章于 2024-06-09 16:39:26 发布