【问题标题】:Why can't I use Arrays.stream(boolean[])?为什么我不能使用 Arrays.stream(boolean[])?
【发布时间】:2022-07-05 23:44:59
【问题描述】:

我无法理解为什么以下不起作用?

boolean[] a = new boolean[5];
Arrays.stream(a);

我不断收到错误:

我尝试使用泛型参数:

Arrays.<Boolean>stream(a);

我好像想不通。

我完全错过了什么?

我正在使用 OpenJDK 11。

【问题讨论】:

  • 这能回答你的问题吗? Java-8: boolean primitive array to stream?
  • 使用java.lang.Boolean而不是原始boolean,所以你的数组将是Boolean[] a = new Boolean[5];
  • @SilvioMayolo 我想知道为什么编译器不喜欢这个?我知道如何从布尔数组创建一个流。
  • @SilvioMayolo 我可以使用BitSet 而不是boolean[]
  • 因为 Java 开发人员认为不适合为 boolean 提供重载。他们只提供了intlongdouble。如果你问我,只提供原始类型的随机子集是愚蠢的,但这是他们决定设计库的方式。

标签: java generics java-stream


【解决方案1】:

试试这个:

List.of(a).stream()...

它应该可以工作

【讨论】:

  • 这不是我要问的。我想知道为什么Arrays.stream 不起作用。
【解决方案2】:

支持原语intlongdouble。这个想法是charbyteshort 可以由intfloatdoublebooleanBoolean 处理。唯一的主要问题是数组到流的转换。

这可以使用一个简单的解决方法来解决:

Stream<Boolean> boolStream = IntStream.range(0, array.length)
        .mapToObj(i -> array[i]);

【讨论】:

    猜你喜欢
    • 2016-08-24
    • 2012-06-25
    • 2018-08-16
    • 1970-01-01
    • 2020-02-18
    • 2010-10-28
    • 2010-10-28
    • 2011-03-26
    相关资源
    最近更新 更多