Java中有没有一种方法可以在不破坏Stream链的情况下将函数应用于Stream的所有元素?我知道我可以调用forEach,但该方法返回的是void,而不是Stream。 最佳答案 有(至少)3种方式。为了示例代码,我假设您要调用2个使用者方法methodA和methodB:A.使用peek():list.stream().peek(x->methodA(x)).forEach(x->methodB(x));虽然文档说仅将其用于“调试”,但它可以工作(并且现在正在生产中)B.使用map()调用methodA,然后将元素返回到流中:
我使用java.nio库中的Files.walk()方法在Java8中生成了一个Stream。问题是该方法默认包含根路径,但我不想要这个元素。在这种情况下,我使用filter()方法解决了这个代码:publicvoidlistFiles(StringdirectoryPath){try{Pathroot=Paths.get(directoryPath);Files.walk(root,1).filter(x->!x.equals(root)).forEach(System.out::println);}catch(IOExceptionex){System.err.println("E
我使用java.nio库中的Files.walk()方法在Java8中生成了一个Stream。问题是该方法默认包含根路径,但我不想要这个元素。在这种情况下,我使用filter()方法解决了这个代码:publicvoidlistFiles(StringdirectoryPath){try{Pathroot=Paths.get(directoryPath);Files.walk(root,1).filter(x->!x.equals(root)).forEach(System.out::println);}catch(IOExceptionex){System.err.println("E
给定一个Map将字符串映射到List,有没有办法使用JavaStreams返回一个boolean值,其中TRUE表示一个或多个列表有元素?如果map中的所有列表都是空的,则返回FALSE。Map>map=…使用Streams可以替代这种常规代码吗?//Seeifanydiffswerefound.LoopthroughtheMap,lookateachListofdiffstoseeifnon-empty.booleananyElementsInAnyList=false;for(Listlist:map.values()){if(!list.isEmpty()){anyElement
给定一个Map将字符串映射到List,有没有办法使用JavaStreams返回一个boolean值,其中TRUE表示一个或多个列表有元素?如果map中的所有列表都是空的,则返回FALSE。Map>map=…使用Streams可以替代这种常规代码吗?//Seeifanydiffswerefound.LoopthroughtheMap,lookateachListofdiffstoseeifnon-empty.booleananyElementsInAnyList=false;for(Listlist:map.values()){if(!list.isEmpty()){anyElement
java老式的分组方式(对listfor循环然后if判断 放入map) 代码复杂,易读性差,维护性差,故本文汇总了Stream流中的分组方法供大家参考,如对您有帮助,请抬抬高贵的小手点个赞吧,欢迎大佬留下高见(以下方法默认都是java8的方法,java9新增方法有标注)ListstudentList=Arrays.asList(newStudent(1L,"小红","篮球","红色",22),newStudent(2L,"小白","足球","蓝色",11),newStudent(3L,"小牛","足球","黑色",33),newStudent(4L,"小羊","足球","红色",17),new
使用Java11,我可以将InputStream初始化为:InputStreaminputStream=InputStream.nullInputStream();但我无法理解InputStream.nullInputStream的潜在用例或OutputStream的类似API即OutputStream.nullOutputStream.从APIJavadocs,我可以弄清楚它ReturnsanewInputStreamthatreadsnobytes.Thereturnedstreamisinitiallyopen.Thestreamisclosedbycallingtheclose
使用Java11,我可以将InputStream初始化为:InputStreaminputStream=InputStream.nullInputStream();但我无法理解InputStream.nullInputStream的潜在用例或OutputStream的类似API即OutputStream.nullOutputStream.从APIJavadocs,我可以弄清楚它ReturnsanewInputStreamthatreadsnobytes.Thereturnedstreamisinitiallyopen.Thestreamisclosedbycallingtheclose
我正在尝试使用下面的位掩码代替代码publicstaticSetfromBitFlags(intbitFlag){returnALL_OPTS.stream().filter(a->(a.ameityId&bitFlag)>0).collect(Collectors.toSet());}我想返回EnumSet而不是一个普通的集合(不想因为强制转换而放弃EnumSet的用处)。需要一些关于如何创建自定义收集器来收集EnumSet的说明。 最佳答案 您可以使用toCollection(Supplier):returnALL_OPTS.s
我正在尝试使用下面的位掩码代替代码publicstaticSetfromBitFlags(intbitFlag){returnALL_OPTS.stream().filter(a->(a.ameityId&bitFlag)>0).collect(Collectors.toSet());}我想返回EnumSet而不是一个普通的集合(不想因为强制转换而放弃EnumSet的用处)。需要一些关于如何创建自定义收集器来收集EnumSet的说明。 最佳答案 您可以使用toCollection(Supplier):returnALL_OPTS.s