LambdaStream流操作
/**Lambda表达式依赖于函数式接口 * * 对象排序 */ //Lambda表达式调用接口 public class lam9 { // rangeClosed(a,b) 返回子序列[a,b]左闭右开,意味着包括b元素,增长步值为1 // ange(a,b) 返回子序列[a,b),右闭右开,意味着不包括b // sum 计算所有元素总和 // sorted 排序元素(从小到大) // generate 生成 public static void main(String[] args) { //生成一个int流对象:此对象不能反复使用,只能一个使用 IntStream is =IntStream.of(10,20,30,40,50,60); is.forEach(System.out::println); //range不包含100,rangeClosed包含100 System.out.println(IntStream.rangeClosed(1,100).sum()); //生成三个5 System.out.println(IntStream.generate(()->5).limit(3).count()); IntStream i2 = IntStream.generate(()->{//生成必须要有返回值 Random rd =new Random(); return rd.nextInt(100)+1;//随机生成一个整数,1-100 //本来只是空,用limit截取10个数 }).limit(10); //输出 IntConsumer ic = (a)->{ System.out.printf("%d ",a); }; i2.forEach(ic); System.out.println(); IntStream.iterate(1, a->a+2).limit(5).forEach(ic); System.out.println(); IntStream.iterate(2, a->a+2).skip(3).limit(5).forEach(ic); System.out.println(); //IntStream 转换为 List<Integer> List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); list.add(4); list.stream().forEach(System.out::println);//把List<Integer>转换为IntStream }
二.
/**Lambda表达式依赖于函数式接口 * * 对象排序 */ //Lambda表达式调用接口 public class lam11 { // rangeClosed(a,b) 返回子序列[a,b]左闭右开,意味着包括b元素,增长步值为1 // ange(a,b) 返回子序列[a,b),右闭右开,意味着不包括b // sum 计算所有元素总和 // sorted 排序元素(从小到大) // generate 生成 public static void main(String[] args) { int[] nums=new int[]{1,2,3,4,5,56}; String[] num2=new String[]{"java","php","css"}; System.out.println(Arrays.stream(nums).max().getAsInt());//OptionalInt:容器只能放一个 System.out.println(Arrays.stream(nums).min().getAsInt());//getAsInt:获取为整数 System.out.println(Arrays.stream(nums).count());//多少个值 System.out.println(Arrays.stream(nums).sum());//和 System.out.printf("%.2f%n",Arrays.stream(nums).average().getAsDouble());//平均值 Arrays.stream(nums).forEach(System.out::println);//输出,当场输出,没有返回值 Arrays.stream(nums).forEach(e->System.out.printf("%02d ",e));//只有一个,f输出 System.out.println("-----------------------------------------"); Stream<String>ss=Stream.of("java","javascript","myaql","php"); //筛选带有java的字符串,全部大写并遍历输出 ss.filter(e->e.startsWith("java")).map(e->e.toUpperCase()).forEach(System.out::println); int[]nums2=new int[]{1,2,2,3,20,3,4,5,20,21}; //转换为IntStream,并每个数加5 // IntStream is =Arrays.stream(nums2).map(e->e+5); //设置条件,除以五等于零的数加五 // Arrays.stream(nums2).forEach(System.out::println); IntStream is =Arrays.stream(nums2).map(e->e%5==0?e+5:e);//有返回值 is.forEach(System.out::println); //输出10个.2的的小数 //Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。 //Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。 double[] dd =new double[10]; Arrays.stream(dd).map(e->Math.random()).forEach(e->System.out.printf("%.2f ",e)); System.out.println(); //distinct消除重复 System.out.println(Stream.of(1,2,3,2,2,2,3,3,3).distinct().count()); //归约:归约是将集合中的所有元素经过指定运算,折叠成一个元素输出,如:求最值、平均数等,这些操作都是将一个集合的元素折叠成一个元素输出。 //将普通流转换成数值流 /** * //reduce的用处: * 求集合元素只和 * 求和 */ int num =6; IntStream zs =IntStream.rangeClosed(1,6); int ok =zs.reduce(1,(a,b)->a*b); System.out.println(ok); //字符串求和,所有元素合并 Stream<String> aa = Stream.of("java","javascript"); System.out.println(aa.reduce("",(a,b)->a.concat(b))); //“”+java+javascript }}
双精度拓展
System.out.println("########一###############");
DoubleStream.of(2.5,1.5,1.2,5.6).map(each->
each+2
).forEach(each->{
System.out.println(each);
});
System.out.println("########二average 计算平均值###############");
double average = DoubleStream.of(2.0, 3.0, 4.0, 5.0).average().getAsDouble();
System.out.println(average);
System.out.println("########三 max 查找最大值###############");
double aDouble = DoubleStream.of(2.0, 3.0, 4.0, 5.0).max().getAsDouble();
System.out.println(aDouble);
System.out.println("########四 选出大 x>=3 且 x<=4 的double值###############");
DoubleStream.of(2.0, 3.0, 4.0, 5.0).filter(each->each>=3.0 && each<=4.0).forEach(System.out::print);
浙公网安备 33010602011771号