当前位置: 首页 > 知识库问答 >
问题:

Java-8:要流的布尔基元数组?

方韬
2023-03-14

没有好的方法来转换给定的boolean[]foo数组成流在Java-8在一个语句,或者我错过了什么?

<罢工>

提示:<代码>数组。流(foo)将不起作用,对于布尔[]类型,没有这样的方法。

共有3个答案

宣熙云
2023-03-14

当然,您可以直接创建流

Stream.Builder<Boolean> builder = Stream.builder();
for (int i = 0; i < foo.length; i++)
  builder.add(foo[i]);
Stream<Boolean> stream = builder.build();

...或通过在foo周围包装AbstractList

Stream<Boolean> stream = new AbstractList<Boolean>() {
  public Boolean get(int index) {return (foo[index]);}
  public int size() {return foo.length;}
}.stream();
戎兴言
2023-03-14

您可以使用Guava的Booleans类:

Stream<Boolean> stream = Booleans.asList(foo).stream();

这是一种非常有效的方法,因为Booleans.asList返回数组的包装器并且不进行任何复制。

晁绍辉
2023-03-14

给定boolean[]foo使用

Stream<Boolean> stream = IntStream.range(0, foo.length)
                                  .mapToObj(idx -> foo[idx]);

注意,每个布尔值都会装箱,但这通常不是什么大问题,因为装箱布尔值不会分配额外的内存(只使用预定义值之一-布尔值。TRUE或布尔值。FALSE)。

 类似资料:
  • 问题内容: 没有一种好的方法可以 在一条语句中 将给定数组转换为Java-8 中的 流,否则我会丢失什么? (我不会问 为什么? ,但这确实令人难以理解:为什么不为所有原始类型添​​加流支持?) 提示: 将不起作用,没有这种类型的方法。 问题答案: 给定用途 请注意,每个布尔值都会被装箱,但这通常不是什么大问题,因为对布尔值的装箱不会分配额外的内存(仅使用预定义的值之一- 或)。

  • 我被一件简单的事情困住了。我有一个名为“tags”的布尔值数组能够通过布尔值访问数组的每个元素对我来说很重要: 我传入trackTags数组并将布尔值赋给它(比如说[true,true,true,false])。因此,当我调用trackTags[0]时,我得到了“true”但是,当我打印“Energy”(能量)时,它应该与trackTags(0)相同,该值始终为false。我知道booleans

  • 本文向大家介绍Java的布尔类型基本介绍,包括了Java的布尔类型基本介绍的使用技巧和注意事项,需要的朋友参考一下 Java 有一种表示逻辑值的简单类型,称为布尔型。它的值只能是真或假这两个值中的一个。它是所有的诸如a下面的程序说明了布尔类型的使用: 这个程序的运行结果如下所示: 关于这个程序有3件有趣的事情要注意。首先,你已经看到,当用方法println ( ) 输出布尔的值时,显示的是“tru

  • 如何创建布尔流。FALSE,比如说,长度为100? 我一直在挣扎的是: 最初我打算创建一个。但是返回一个数组。所以合理地,我考虑使用流API作为一个方便的和几乎(1)操作工具; 没有no-params构造函数(2),因此我不能使用,因为它接受

  • 我想用Java 8编写纯函数,它将集合作为参数,对集合每个对象应用一些更改,并在更新后返回一个新集合。我希望遵循FP原则,所以我不希望更新/修改作为参数传递的集合。 有没有什么方法可以通过Stream API做到这一点,而不首先创建原始集合的副本(然后使用forEach或'normal'for循环)? 下面的示例对象,并假设我要将文本追加到object属性之一: 所以我想做一些类似下面的事情,但不

  • 问题内容: 我想创建一个方法,该方法创建元素流,这些元素流是多个给定流的笛卡尔积(由二元运算符最后汇总为相同类型)。请注意,参数和结果都是流, 而不是 集合。 例如,对于 {A,B} 和 {X,Y}的 两个流,我希望它产生值 {AX,AY,BX,BY}的流 (简单串联用于聚集字符串)。到目前为止,我想出了以下代码: 这是我想要的用例: 预期结果:。 另一个例子: 预期结果:。 但是,如果我运行代码