草庐IT

GridFS-Stream

全部标签

java - 使用 Stream 避免 NoSuchElementException

我有以下Stream:Streamstream=stream();Tresult=stream.filter(t->{doublex=getX(t);doubley=getY(t);return(x==tx&&y==ty);}).findFirst().get();returnresult;但是,并不总是有结果给我以下错误:NoSuchElementException:Novaluepresent那么如果没有值,我该如何返回null? 最佳答案 您可以使用Optional.orElse,这比检查isPresent简单得多:Tresu

java - java.util.Collection 为什么不实现新的 Stream 接口(interface)?

我刚刚花了一些时间开始研究有关流和lambda的java-8嗡嗡声。令我惊讶的是,您不能直接在java.util.Collection上应用Stream操作,例如.map()、.filter()>。java.util.Collection接口(interface)未扩展是否有技术原因这些Stream操作的默认实现?谷歌一下,我看到很多人按照以下模式编码的例子:Listlist=someListExpression;ListanotherList=list.stream().map(x->f(x)).collect(Collectors.toList());如果您的代码中有很多这样的流操

java - Java 8 是否缺少处理可变流的 Stream.concat?

目前我们有以下Stream.concat在Java8中:publicstaticStreamconcat(Streama,Streamb);我很惊讶为什么没有版本采用Stream的可变参数?目前我的代码如下:StreamresultStream=Stream.concat(stream1,Stream.concat(stream2,Stream.of(element))).filter(x->x!=0).filter(x->x!=1).filter(x->x!=2);如果此签名的可变参数可用:publicstaticStreamconcat(Stream...streams);然后我可

java - 如何将多个谓词应用于 java.util.Stream?

如何将多个谓词应用于java.util.Stream的filter()方法?这就是我现在所做的,但我不太喜欢它。我有一个Collection事物,我需要根据过滤器(谓词)的Collection减少事物的数量:Collectionthings=someGenerator.someMethod();Listfiltered=things.parallelStream().filter(p->{for(Filterf:filtersCollection){if(f.test(p))returntrue;}returnfalse;}).collect(Collectors.toList());

Java 8 的流 : why parallel stream is slower?

我正在使用Java8的流,无法理解我得到的性能结果。我有2核CPU(Inteli73520M)、Windows8x64和64位Java8update5。我正在对字符串的流/并行流进行简单映射,发现并行版本有点慢。Function,Long>timeOperation=(Streamstream)->{longtime1=System.nanoTime();finalListlist=stream.map(String::toLowerCase).collect(Collectors.toList());longtime2=System.nanoTime();returntime2-ti

java - 有什么方法可以重用 Stream 吗?

这个问题在这里已经有了答案:Copyastreamtoavoid"streamhasalreadybeenoperateduponorclosed"(10个回答)关闭2年前。我正在学习Java8的新功能,在尝试使用流(java.util.stream.Stream)和收集器时,我意识到一个流不能被使用两次。有没有办法重复使用它? 最佳答案 来自documentation:Astreamshouldbeoperatedon(invokinganintermediateorterminalstreamoperation)onlyonce

java - Java 8 与 Java 9 中的 Stream.peek() 方法

我正在学习Java8lambda表达式,并想询问以下与peek相关的Java代码。我遇到的函数接口(interface)中的方法。在IDE上执行程序时,它没有输出。我期待它会给出2,4,6.importjava.util.Arrays;importjava.util.List;publicclassTest_Q3{publicTest_Q3(){}publicstaticvoidmain(String[]args){Listvalues=Arrays.asList(1,2,3);values.stream().map(n->n*2).peek(System.out::print).co

java - 在 Java 中使用 stream.sorted() 对列表进行排序

我对从流中排序列表感兴趣。这是我正在使用的代码:list.stream().sorted((o1,o2)->o1.getItem().getValue().compareTo(o2.getItem().getValue())).collect(Collectors.toList());我错过了什么吗?该列表未在之后排序。它应该根据具有最低值的项目对列表进行排序。for(inti=0;i以及打印方式:publicstaticvoidprint(Listlist,inti){System.out.println(list.get(i).getItem().getValue());}

java - 在 Spring MVC 中使用 ScrollableResults-backed Stream 作为返回类型时遇到问题

重要提示:这已被接受为Springissue目标修复版本为4.1.2。我的目标是在从Hibernate的ScrollableResults生成HTTP响应时实现O(1)空间复杂度。我想保留标准机制,其中调度MessageConverter以处理从@Controller返回的对象。我设置了以下内容:MappingJackson2HttpMessageConverter丰富了处理Java8Stream;的JsonSerializer自定义ScrollableResultSpliterator需要将ScrollableResults包装到Stream中;OpenSessionInViewIn

java - 为现有 Stream 添加新值(value)

有没有向现有Stream添加新值的好方法?我能想象的都是这样的:publicStreamaddToStream(Streamstream,Telem){Listresult=stream.collect(Collectors.toList());result.add(elem);returnresult.stream();}但我正在寻找可以在lambda表达式中使用而无需冗长的更简洁的东西。在我尝试实现PECS原理的时候又出现了一个问题:publicStreamaddToStream(Streamstream,Telem){Listresult=stream.collect(Colle