草庐IT

GridFS-Stream

全部标签

Java 8 Stream - 并行执行 - 不同的结果 - 为什么?

假设我有一个Listints=newArrayList();我想为其添加值并使用forEach()比较并行执行的结果和Collectors.toList().首先,我向这个列表中添加一些来自顺序IntStream和forEach的值:IntStream.range(0,10).boxed().forEach(ints::add);我得到了正确的结果:ints==>[0,1,2,3,4,5,6,7,8,9]现在我.clear()列表并并行做同样的事情:IntStream.range(0,10).parallel().boxed().forEach(ints::add);现在由于多线程我得

java - 如何使用 Stream API java 8 一起打印两个列表?

我有两个列表如下Listnames=Arrays.asList("James","John","Fred");Listages=Arrays.asList(25,35,15);我想做的是像这样打印这两个列表James:25John:35Fred:15用经典的方式很容易做到for(inti=0;i有没有办法使用StreamAPIjava8来做到这一点?我能做的就是只打印一个列表names.stream().forEach(System.out::println); 最佳答案 最简单的方法是创建一个IntStream来生成索引,然后将每

java - 重复 Stream allMatch() 直到 true

inttestValue;booleansuccess=false;while(success==false){testValue=generateRandomInt();success=mySystem.getHosts().parallelStream().allMatch(predicate(testValue));}returntestValue;我正在玩java8流。您有什么建议可以使上面的代码更优雅/更易读? 最佳答案 您可以使用无限的IntStream代替while循环,并返回与您的条件匹配的流的第一个int:retu

java - java.util.stream.Stream<T>.sorted() 的大 O 复杂度

有谁知道java.util.stream.Stream.sorted()的时间复杂度是多少?是吗? 最佳答案 好吧,sorted()本身是O(1),因为它是一个不消耗流的中间操作,而只是向管道添加一个操作。一旦终端操作使用了流,排序就会发生,或者它什么都不做(O(1)),因为流知道元素已经排序(例如,因为它们来自SortedSet)或者流不是并行的,它委托(delegate)给Arrays.sort()(O(nlogn))或者流是并行的,它委托(delegate)给Arrays.parallelSort()(O(nlogn))

java - Scala Stream 与 Java Stream 懒惰差异

我对惰性求值的概念还很陌生。当我在Scala中执行这行代码时;"12334".grouped(1).toStream.filter{n=>println("n:"+n);n=="3";}它打印出:n:1n:2n:3但是当我在Java中运行类似的东西时,比如:ListmyList=newArrayList(Arrays.asList("12334".split("")));StreammyList2=myList.stream().filter(a->{System.out.println("a:"+a);return"3".equals(a);});它静默终止,没有向控制台行写入任何内

java - 使用 Optional.orElseThrow 在 Stream 中抛出 RuntimeException

下面的代码工作正常:Stream.of("key1","key2").map(key->{SomeObjectfoo=service.find(key);if(foo==null){thrownewRuntimeException("Noentityfoundwithkey:"+key);}returnfoo;})//...但是,当我使用Optional中的orElseThrow时:Stream.of("key1","key2").map(key->Optional.ofNullable(someService.find(key)).orElseThrow(()->newRuntime

java - 在执行其他操作之前查找 Stream 大小

在我的程序中,我重复1collectJava8streams将对象的集合减少为单个对象。此集合的大小在整个执行过程中可能变化很大:从3个对象到数百个对象。publicvoidfindInterestingFoo(Streamfoos){internalState.update(foos.collect(customCollector()));}在优化我的代码和寻找瓶颈的过程中,我做了流parallel在某一点。这在那个时间点奏效了,因为Collection品都相当大。后来,在改变程序的其他部分和参数后,集合变小了。我意识到不使流并行会更有效率。这是有道理的:为4个对象在多个线程上分配工

java - 如何在 Java 中实例化和填充 Scala Stream?

我有一个Scala函数foo(bs:Stream[Bar]):Bat我需要从Java代码调用它。如何在Java中创建“bs”流(Stream[Bar])并延迟生成其Bar对象? 最佳答案 最好的方法是使用Stream对象伴侣上可用的工厂之一。对于其中最有用的部分,您还需要实现Function1,这可以通过扩展AbstractFunction1来完成。这是一个例子:importscala.collection.immutable.Stream;importscala.runtime.AbstractFunction1;publiccl

java - 为什么 Java 8 Stream 类可以自动关闭?

在Java8中,Stream类实现了AutoCloseable。这意味着应该显式关闭流实例。我理解为什么文件处理程序和数据库连接是可关闭的。但为什么要流? 最佳答案 我认为当前documentation/javadocofStream很清楚:StreamshaveaBaseStream.close()methodandimplementAutoCloseable,butnearlyallstreaminstancesdonotactuallyneedtobeclosedafteruse.Generally,onlystreamswh

java - 递归如何与 Java 8 Stream 一起工作?

我有一个这样的方法,我在Streams中使用递归:privatestaticListconvertToFlatList(ListmemberList){returnmemberList.stream().flatMap(i->Stream.concat(Stream.of(i),convertToFlatList(i.getChildren()).stream())).collect(Collectors.toList());}假设一个Member类有一个子成员列表,它总是被初始化为一个空列表。我在这里所做的是将成员的层次列表转换为平面列表。我理解那部分。我不明白递归在这里是如何工作的