Stream

it2024-04-03  50

一种对list进行操作方法 操作集合的类、 主要应用了函数接口,可以使用LAMBda简化操作

package com.company.Democolle; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; public class TcpClient { public static void main(String[] args) { Stream<String> stream = Stream.of("张","张一一","和手滑");//使用静态方法,调用流 Stream<String> stream2 = stream.filter((String name)->{return name.startsWith("张");});//filter用于过滤,返回值是一个stream流 //有返回值,返回一个新的流 stream2.forEach(name->{System.out.println(name);}); //stream流,是一种管道流,数据只能流动一次,流过之后不能在调用了 } }

Stream流中常用方法,map方法,进行一一映射实现了Function接口

import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; public class TcpClient { public static void main(String[] args) { Stream<String> stream = Stream.of("1","2","3"); /* Function接口中抽象方法R apply(T t); 将给定数据类型,转化为R类型 */ //map方法,里面是个函数式接口,可以传递lambda表达式 //Function接口将T类型,转换为R类型 Stream<Integer> stream1 = stream.map((String s)->{return Integer.parseInt(s);});//重写接口中的R apply()方法,将String类型数据 //转化为int //除了count和foreach之外,全都是可以进行链式的流,所以上一个方法,还是可以返回一个Stream流 stream1.forEach((i)->System.out.println(i)); //stream流,是一种管道流,数据只能流动一次,流过之后不能在调用了 } }

count统计元素元素个数

import java.lang.reflect.Array; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; public class TcpClient { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("我是神"); list.add("杜兰特"); list.add("多诺万"); Stream<String> stream = list.stream(); long count = stream.count();//统计元素个数 } } import java.lang.reflect.Array; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; public class TcpClient { public static void main(String[] args) { List<String> list = new ArrayList<>(); list.add("我是神"); list.add("杜兰特"); list.add("多诺万"); Stream<String> stream = list.stream(); long count = stream.count();//统计元素个数 } } import java.lang.reflect.Array; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; public class TcpClient { public static void main(String[] args) { String[] str = {"詹姆斯","杜兰特","韦德"}; Stream.of(str).limit(3);//将数组转化为一个流,并且截取前三位 } } package com.company.Democolle; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; public class TcpClient { public static void main(String[] args) { String[] str = {"詹姆斯","杜兰特","韦德"}; Stream stream2 = Stream.of(str).limit(2);//将数组转化为一个流,并且截取前三位 Stream stream = Stream.of("科比","霍华德"); //concat(Stream s1,Stream S2)两个流,合并成一个,是一个静态方法 Stream s3 = Stream.concat(stream,stream2); s3.forEach(name->System.out.println(name)); } } package com.company.Democolle; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.List; import java.util.stream.Stream; public class TcpClient { public static int num(int numer,Cos cos){//静态方法参数里,有函数式接口 return cos.Cal(numer);//静态函数中,参数是接口类型,接口还可以调用自己的抽像方法, // 不过传递参数的时候,要传递实现类,因为抽象方法你总的实现 } public static void main(String[] args) { TcpClient.num(8,(int i)->{ return i + 1;});//传统的lambda方法,就是这么写的 //但是可以简化,在这里完成了对抽象函数的方法重写 } }
最新回复(0)