草庐IT

dingtalk_stream

全部标签

java - Stream方式获取第一个元素匹配 boolean 值的索引

我有一个List.我想使用特定用户名获取流中(第一个)用户的索引。我不想真正需要User成为.equals()对一些描述User,只是为了拥有相同的用户名。我可以想到一些丑陋的方法来做到这一点(迭代和计数),但感觉应该有一个很好的方法来做到这一点,可能是通过使用Streams。到目前为止,我拥有的最好的是:intindex=users.stream().map(user->user.getName()).collect(Collectors.toList()).indexOf(username);这不是我写过的最糟糕的代码,但也不是很好。它也不是那么灵活,因为它依赖于映射函数到具有.e

具有多个语句的 Java 8 Lambda Stream forEach

我还在学习Lambda,如果做错了请见谅finalLongtempId=12345L;ListupdatedEntries=newLinkedList();for(Entryentry:entryList){entry.setTempId(tempId);updatedEntries.add(entityManager.update(entry,entry.getId()));}//entryList.stream().forEach(entry->entry.setTempId(tempId));似乎forEach只能为一个语句执行。它不会返回更新的流或函数以进一步处理。我可能完全选

Java 8 Stream API 查找与属性值匹配的唯一对象

使用Java8Stream从Collection中查找与Property值匹配的对象。Listobjects=newArrayList();个人属性->姓名、电话、电子邮件。遍历人员列表并找到对象匹配的电子邮件。看到这可以通过Java8流轻松完成。但这仍然会返回一个集合?例如:ListmatchingObjects=objects.stream.filter(p->p.email().equals("testemail")).collect(Collectors.toList());但我知道它总会有一个独特的对象。我们可以做些什么来代替Collectors.toList以便我直接获得实

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