相关疑难解决方法(0)

如何在Java中将List <Integer>转换为int []?

这类似于这个问题: 如何在Java中将int []转换为Integer []?

我是Java的新手.我怎么能转换List<Integer>int[]Java中?我很困惑,因为List.toArray()实际上返回一个Object[],可以强制转换为虚空Integer[]int[].

现在我正在使用循环来执行此操作:

int[] toIntArray(List<Integer> list){
  int[] ret = new int[list.size()];
  for(int i = 0;i < ret.length;i++)
    ret[i] = list.get(i);
  return ret;
}
Run Code Online (Sandbox Code Playgroud)

我相信有更好的方法可以做到这一点.

java arrays collections

545
推荐指数
11
解决办法
41万
查看次数

为什么Java 8中的新java.util.Arrays方法没有为所有原始类型重载?

我正在审查Java 8的API更改,我注意到新方法java.util.Arrays并没有为所有原语重载.我注意到的方法是:

目前,这些新的方法只能处理int,longdouble原语.

int,longdouble,可能是最广泛使用的原语,所以有意义的是,如果他们必须限制API,他们会选择这三个,但为什么他们必须限制API?

java arrays java-8

54
推荐指数
1
解决办法
8480
查看次数

为什么 Stream.Builder 有 add 和 accept 方法?

我正在使用 aStream.Builder并且我偶然发现这个接口同时具有方法accept(T t)add(T t). 唯一的区别是前者返回void,后者返回 a Stream.Builder

该文档甚至提到这些方法具有相同的默认实现:

默认实现的行为就像:

accept(t)
return this;
Run Code Online (Sandbox Code Playgroud)

请注意,他们忘记了分号,但那是另一回事了。

我的问题是:为什么他们有两种方法可以向流构建器添加内容?我认为这会使 API 变得混乱,我认为他们想避免这种情况

有什么令人信服的理由这样做吗?

java java-stream

25
推荐指数
1
解决办法
1180
查看次数

Java中的(Un)装箱原始数组

在Android Java世界中,是否有一种直接(理想情况下是一次调用)方式将数组转换int为a ArrayList<Integer>和back?调用toArray()ArrayList返回一个数组Integer- 不是我想要的.

我可以通过循环手动轻松完成(事实上已经做过).我想知道库/语言是否支持相同.

编辑:谢谢大家,我已经写了自己的拳击手和unboxer.我很惊讶语言/ RTL设计师自己没有想到它,特别是原始类型的设计不符合集合.

java collections android boxing

7
推荐指数
2
解决办法
4285
查看次数

为什么 ByteArrayOutputStream.close() 会抛出 IOException?

为什么ByteArrayOutputStreamclose是用throws IOException? 首先,事实上它不能扔任何东西,因为它的身体是空的。其次,在法律上它不能抛出任何东西,因为它的文档说“关闭 ByteArrayOutputStream 没有任何效果”。

这不是(不重要,但仍然)有点错误吗?

是的,我知道它的超类OutputStream实现了Closable,其close方法允许 throw IOException。但是没有人禁止使用没有抛出规范的方法覆盖它(in ByteArrayOutputStreamclose。(即使在某些古老的 Java 版本中禁止用更少抛出的方法覆盖更多抛出的方法,现在更改ByteArrayOutputStream.close定义不会是不兼容的更改。)

java stream bytearrayoutputstream

5
推荐指数
1
解决办法
729
查看次数

创建从 byte[] 到原始字节流的 Stream

我有一个byte[],我想制作一个字节流。

对于int[]andlongdouble,我在 Arrays 类中看到了方法:

Arrays.stream(int[] array)
Arrays.stream(long[] array)
Arrays.stream(double[] array)
Run Code Online (Sandbox Code Playgroud)

但是,我没有看到任何 method Arrays.stream(byte[] array)

那么,将字节原语流作为实际字节获取的最简单、最简洁的方法是什么?

我需要对 byte[] 进行转换,并且需要一个字节流来使用所有 Stream 函数来完成此操作(不,我不想将它们全部转换为整数。)

谁有好的解决办法吗?

附言。其他人从微控制器 API 向我提供 byte[] ...所以如果没有必要,我不想使用其他数据类型。

谢谢。

java

5
推荐指数
1
解决办法
2449
查看次数

当我使用Java 8 Stream.of原始类型时,结果很混乱

    byte[] a = {1,2,3};
    System.out.println(Stream.of(a).count());

    Byte[] b = {1,2,3};
    System.out.println(Stream.of(b).count());
Run Code Online (Sandbox Code Playgroud)

结果是1和3,为什么?

java java-8 java-stream

4
推荐指数
1
解决办法
294
查看次数

Java 8 Streams:对于Stream <Byte>类型,未定义boxed()方法

我试图将一个字节数组转换为LinkedList<Byte>:

//data is of type byte[]
List<Byte> list = Arrays.stream(toObjects(data)).boxed().collect(Collectors.toList());

Byte[] toObjects(byte[] bytesPrim) {
    Byte[] bytes = new Byte[bytesPrim.length];
    Arrays.setAll(bytes, n -> bytesPrim[n]);

    return bytes;
}
Run Code Online (Sandbox Code Playgroud)

第一行引发一条错误消息:

boxed()类型的方法未定义Stream<Byte>.

知道为什么我会收到此错误消息以及如何规避这个问题吗?

java boxing java-8 java-stream

2
推荐指数
1
解决办法
1673
查看次数

如何在Java中使用带有字节数组的lambda表达式?

我有一个类型的变量byte[],而不是Byte[].

我正在尝试使用Arrays::stream方法用lambda处理这个数组.

然而,有没有这样的重载Arrays::stream这需要byte[]作为参数.

重新加载Arrays::stream(T[] data)也不起作用.
我猜是因为byte []是java prime类型字节的数组,不能将其视为泛型类型参数T.

我试着投byte[]Byte[]int[],而这一切也失败了.

java lambda

1
推荐指数
1
解决办法
821
查看次数