草庐IT

Intstream

全部标签

java - 如何连接两个 IntStreams?

我想创建一个List数值为72-129和132-200。我考虑过使用IntStream并将值映射到字符串并收集到列表。我使用了这段代码:Liststrings72to200=Stream.concat(Stream.of(IntStream.range(72,129)),Stream.of(IntStream.range(132,200))).map(e->String.valueOf(e)).collect(Collectors.toList());但是,如果我调试strings72to200的实际值,我明白了:[java.util.stream.IntPipeline$Head@5

java - 供供应商生成 IntStream 的 Lambda 表达式

如何用lambda表达式替换此处的Supplier代码IntStreaminStream=Stream.generate(newSupplier(){intx=1;@OverridepublicIntegerget(){returnx++;}}).limit(10).mapToInt(t->t.intValue());inStream.forEach(System.out::println);上面这段代码的输出是:12345678910 最佳答案 Stream::generate不适合这个问题。根据文档:Thisissuitable

Java 8 : IntStream to Integer[]

我正在编写一个简单的程序,最终将绘制出用Java编写的各种排序算法的运行时间。排序算法的通用接口(interface)是通过一个方法:publicvoidsort(Comparable[]xs)我正在尝试使用Java8的流机制按照以下几行生成随机测试用例:publicstaticIntStreamtestCase(intmin,intmax,intn){Randomgenerator=newRandom();returngenerator.ints(min,max).limit(n);}我的问题是,如何将IntStream类型的对象转换为Integer[]?

java - 如何从 Set<Integer> 创建 IntStream?

我目前这样做:Setintegers=...//sourcedfromelsewhereincodeIntStreamintStream=integers.stream().mapToInt(value->value);必须将值映射到值以转换Stream似乎是多余的至IntStream.有没有办法在没有冗余的情况下做到这一点mapToInt(...)部分? 最佳答案 不,你必须使用.mapToInt(value->value)或者(对我来说更好看).mapToInt(Integer::intValue).作为Stream是通用类,它

java - 值的组序列

我想知道是否有任何巧妙的方法可以使用新的StreamAPI来“分组”值序列。例如将一系列整数拆分为整数组,其中每组都是一个递增的数字序列:IntStreamseq=IntStream.of(1,2,3,-1,-1,1,2,1,2);IntFunctionnext=i->i+1;//DESIREDOUTPUT:[[1,2,3],[-1],[-1],[1,2],[1,2]] 最佳答案 不幸的是,StreamAPI不太适合解决涉及对Stream元素的依赖操作的问题,例如这个问题。但是,您可以使用StreamEx为此的图书馆:publics

java - IntStream 分步迭代

如何使用IntStream在步骤(3)中遍历数字范围(0-100)?我试过iterate,但这永远不会停止执行。IntStream.iterate(0,n->n+3).filter(x->x>0&&x 最佳答案 实际上range非常适合这个。IntStream.range(0,100).filter(x->x%3==0);//107,566ns/op[Average]编辑:Holgers的解决方案是执行速度最快的解决方案。由于下面的代码行IntStream.range(0,100).filter(x->x%3==0).forEach

java - IntStream 什么时候真正关闭? SonarQube S2095 是 IntStream 的误报吗?

我使用Java8流代替许多旧式for循环来迭代一堆结果并生成摘要统计信息。例如:intmessages=IntStream.rangeClosed(0,7).map(ids::get).reduce(Integer::sum).getAsInt();注意:我知道还有其他方法可以进行上面显示的计数。我这样做是为了说明我的问题。我正在使用带有Java3.9插件的SonarQube5.3。在该配置中,上面的代码行违反了squid规则S2095:“应关闭资源”。如果AutoCloseable(例如FileInputStream)已打开但从未关闭,这就是我希望看到的结果。所以这是我的问题:终端操

java - 反向排序流

我想对如下所示的流进行反向排序,但出现编译时错误"Themethodsorted()inthetypeIntStreamisnotapplicableforthearguments((o1,o2)->{})".谁能纠正这个IntStream.range(1,100).filter(x->x%2!=0).sorted((o1,o2)->-o1.compareTo(o2)).forEach(System.out::println); 最佳答案 说明因为您正在使用IntStream它只有一个重载sorted方法,这是自然顺序(这是有道理的

java - IntStream 来自 Random 和 Random 并发

使用相同的Random实例来生成一个流(或并行流)并影响其中一部分的流是否安全?考虑下面的代码。相同的gen用于生成并行IntStream并每隔几个字符生成一个随机空间。它运行并成功完成,没有抛出异常。但是这段代码线程安全吗?看起来是这样,因为没有无效(超出范围)的字符值。我想我应该破坏Random的内部数据,因为它的方法没有标记为synchronized,但显然情况并非如此。为什么?publicclassRandomGenTest{Randomgen=newRandom();StringgetRandomText(intlen,doublespaceProb){returngen.i

java - 使用嵌套 Intstream 循环时 Java 8 的性能很糟糕

在阅读了Java8的java.util.stream.Intstream之后,我一直在用流替换一些传统的循环。不幸的是,我在处理嵌套循环时遇到了一些性能问题。正如预期的那样,以下代码在我的机器上运行大约需要47毫秒:IntStream.range(0,1000000000).forEach(i->{});但是,嵌套另一个IntStreamhyper会使执行时间增加到大约10,458毫秒-即:IntStream.range(0,1000000000).forEach(i->{IntStream.range(0,1).forEach(j->{});});这是我的误用案例,还是将来可能会解决