我很难理解为什么一维数组到基元数组的转换失败,而二维情况下却有效。
public static void main( String[] args ) throws IOException {
List<Integer> oneD = List.of(1,2,3);
int[] one = oneD.toArray(int[]::new); // error
List<int[]> twoD = List.of(
new int[]{1,2},
new int[]{3,4}
);
int[][] two = twoD.toArray(int[][]::new); // works
}
我试着翻阅文件,但没有用。我可以看到的一件事是,在第一种情况下,由于我们试图将integer
转换为int
,所以可能导致错误,而第二种情况可以正常工作,因为int[]
将是一个对象类型。
用一个示例来解释toArray
的工作原理,特别是对基元的工作原理,将非常有帮助。
是的,integer
与int
完全不同。int[]
不是对象[]
。
还有,二维数组?你错了;这些都不存在。int[][]
不是int的二维数组。它是int数组的一维数组。有一些简单的语法糖可以让您编写int[][]x=new int[5][10];
,这是用于:
int[][] x = new int[5][];
for (int i = 0; i < x.length; i++) x[i] = new int[10];
这很好,也很方便,但在引擎盖下,它不是一个2D阵列;这些都不存在。x.getClass()
的“组件类型”是int[].class-然后数组可以“脱节”(您可以让第0行包含5个单元格,而第1行包含10个单元格,即您可以编写
x[1]=新的int[20];“这样就可以很好地工作。
这就解释了twod
示例为什么可以工作。
若要将列表
转换为int[]
,请编写for循环。
List<Integer> list = ...;
int[] arr = new int[list.size()];
for (int i = 0; i < list.size(); i++) arr[i] = list.get(i);
问题内容: 是否有一种优雅的方法将原语数组转换为相应容器对象的数组- 例如,将a 转换为a ?还是我坚持循环浏览并手动执行? 是的,循环并不完全困难。有点丑。 问题答案: Apache Commons Apache Commons / Lang 有一个ArrayUtils类,用于定义这些方法。 所有称为 从原始数组转换为包装器数组的方法 从包装对象数组到原始数组的所有转换 例: 番石榴 但是然后我
问题内容: 我将 ArrayList 与包装器类 Short一起使用 。 添加一些值后,我想获取原始数组,但是似乎该函数没有办法,因为它需要带有包装器类的 Array 。 是否有另一种方法不使用for或类似的东西? 问题答案: Apache Commons / Lang 有一个ArrayUtils类,用于定义这些方法。 所有调用的方法都从原始数组转换为包装器数组。 从包装对象数组到原始数组的所有转
问题内容: 注意: 这要求与通常的元组到数组的转换相反。 我必须将一个参数传递给(包装的c ++)函数作为嵌套元组。例如,以下作品 而以下 不 不幸的是,我想使用的参数是一个numpy数组。对于某些N,该阵列的尺寸始终为2xN,这可能会很大。 有没有简单的方法可以将其转换为元组?我知道我可以循环遍历,创建一个新的元组,但是如果numpy数组提供了一些不错的访问权限,我会更喜欢。 如果不可能如我所愿
我对postgresql(9.4)和javascript有一些问题。我试图将jsonb[]数据类型转换为javascript中json值的数组/列表。为了简单起见,我的示例在数组中只包含一个元素(json)。 以下是我迄今为止尝试过的。 这是我要找的。 任何帮助将不胜感激。
本文向大家介绍Swift使用map(_ :)转换数组的元素,包括了Swift使用map(_ :)转换数组的元素的使用技巧和注意事项,需要的朋友参考一下 示例 如Array符合SequenceType,我们可以使用map(_:)转化的阵列A到阵列B使用类型的封闭(A) throws -> B。 例如,我们可以使用它将Ints数组转换为s数组,String如下所示: map(_:)将遍历数组,将给定的
注意:我不知道这是属于这里还是属于数学交换,但我将从这里开始,因为我正在寻找数值解。 我需要将通用形式$x yi$的复数转换为基$2i$(四分之一虚数基数),最好没有基数(该基数中的小数点/分数)。 有没有进行这种转换的库 有没有办法用不带基数的2i$来表示所有复数(带整数系数) 欧几里德除法是唯一的转换算法吗