IntStream.boxed()与for循环| 表现

piyushGoyal

我正在编写一段代码,其中有一个String []和一个采用此String []并返回Byte []的方法,该方法将string-Byte对保持在几个Byte可以为空的位置。最终,我必须转换Byte并从String []获取一个以键为字符串的映射,并以value作为转换的返回。这就是我在Java 8流中实现相同方法的方式:

IntStream.range(0, productReferences.length)
            .filter(index -> (null!= productsPrice[index])).boxed()
            .collect(Collectors.toMap(position -> productReferences[position],
                    position ->callSomeMethod(productsPrice[position])));

其中productReference是String [],而productPrice []是Byte []数组。

现在的问题是IntStream.boxed()方法。在内部,它将int装箱到Integer,以便它返回一个Stream,我认为这是一个比较昂贵的操作。

其他方法将使用Java进行循环

    for(int i=0;i<productReferences.length; i++){
    if (productsPrice[index]==null) continue;
    //other code
}

处理这种情况的最佳方法是什么?我知道创建IntStream的原因,但是如果我可以在不带boxed()方法的collect方法中真正拥有索引,从而避免装箱呢?

图那基

您可以使用collect已有操作,IntStream而不必将其装箱到中Stream<Integer>

IntStream.range(0, productReferences.length)
         .filter(index -> productsPrice[index] != null)
         .collect(
            HashMap::new,
            (m, i) -> m.put(productReferences[i], callSomeMethod(productsPrice[i])),
            Map::putAll
         );

Integer因为收集器的消费者部分需要一个索引,所以不会将每个索引都装在索引中ObjIntConsumer; 所以i在上面的代码中是一个int正如Holger指出的那样Collectors.toMap如果该版本将覆盖值,则在键重复的情况下,使用的原始代码将引发异常。

您仍然需要在真实数据上对这两个解决方案进行基准测试,以查看是否带来了改善。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

熊猫系列的循环表现

来自分类Dev

直到循环陷入困境;表现奇怪?

来自分类Dev

用于循环增量的JavaScript表现异常

来自分类Dev

Python:为什么for循环表现怪异?

来自分类Dev

为什么梳子在循环内表现不同?

来自分类Dev

perl:`$1` 在循环中的表现如何?

来自分类Dev

Python:如果 else 循环表现不同

来自分类Dev

对于循环逻辑迭代,为什么不表现相同?

来自分类Dev

循环内外的Javascript“ var variable”。表现上的任何差异

来自分类Dev

为什么for循环会表现为这种方式?

来自分类Dev

Python整数在循环中表现得很奇怪

来自分类Dev

为什么IntStream.range(0,100000).parallel()。foreach需要更长的时间而不是正常的for循环

来自分类Dev

C ++ VS2010调试器在超出循环范围的循环变量上表现异常

来自分类Dev

没有循环的C程序出乎意料地表现为循环

来自分类Dev

javascript for 循环在更新和记录循环内的数组时表现异常

来自分类Dev

任何表现

来自分类Dev

Postgres表现

来自分类Dev

表现差

来自分类Dev

深层表现

来自分类Dev

EASTL表现

来自分类Dev

改善表现

来自分类Dev

深层表现

来自分类Dev

在STM32传输结束时,对存储器的循环DMA周期将如何表现?

来自分类Dev

PHP在带有关联数组的for循环中表现奇怪

来自分类Dev

对于循环逻辑迭代,为什么不表现出相同的效果?

来自分类Dev

在for循环内进行设置时,变量设置表现出意外的行为

来自分类Dev

无法解释为什么代码在简单的while循环中表现不正常

来自分类Dev

如何强制复选框表现得像单选按钮,双循环

来自分类Dev

为什么计数在python for循环中表现不正常

Related 相关文章

热门标签

归档