Java 3D数组: Storing cube,检索立方体切片

标签 java multidimensional-array slice

当使用奇数立方 3d 数组(3x3x3、5x5x5、7x7x7 等)时,在给定切片定向轴和值的情况下,返回该数组的 2d 切片的最有效方法是什么用于确定切片沿该轴的相关位置?

最佳答案

我认为您可以做出三个选项的选择,具体取决于您希望切片方法的输入和输出:

  • 切片适用于原始多维 Java 数组,生成原始多维 Java 数组,例如:

int[][] ArrayUtils.slice(int[][][]立方体,int轴,int sliceIndex)

  • 切片适用于原始多维 Java 数组,生成带有 getter 的对象,例如:

SomeKindOf2DimArrayClass ArrayUtils.slice(int[][][]立方体,int轴,int sliceIndex)

  • 切片使用非原始数组作为输入和输出,并且是此类的方法:

SomeKindOf2DimArrayClass slice(int axis, int sliceIndex)

这就是您的界面所关心的。

在实现方面,如果您使用原始数组,那么您没有太多选择,只能做一些“繁重的工作” - 为 siice 构建一个二维数组 - 至少对于第三轴。对于第一个轴,您只需采用一个二维数组(即 result = Arrays.copyOf(cube[sliceIndex]),或者如果您感觉轻松,甚至可以使用引用);对于第二个轴,你会得到类似的东西

for(int i=0; i<cube.length; i++) {
    myAllocated2dArray[i] = Arrays.copyOf(cube[i][sliceindex])
}

如果您使用对象,您有很多选择,从我刚刚描述的内容到 @Aquillo 在 his answer 中建议的内容这里,使用 getter 方法对原始数组进行 O(1) 空间包装。

通过阅读 C language FAQs 中有关类似问题的答案,您可能会获得有关已建议的两种实现的一些灵感。 ,其中指针(引用)的使用是明确的:

How can I use statically- and dynamically-allocated multidimensional arrays interchangeably when passing them to functions?

关于Java 3D数组: Storing cube,检索立方体切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15992076/

相关文章:

java - 如何在 android 上的 textView 中设置 List<String>

c - 如何只初始化字符数组的一部分?

sorting - 对 map slice 进行排序

javascript - 通过 onclick 事件将 json 编码的多维数组传递给 javascript

javascript - PHP 到 Javascript 多维数组

c - 字符串数组

go - 将整数 slice append 到整数 slice 的 slice 会修改被 append 的 slice

java - 有没有办法将格式化的 BigDecimal 数字分配给 BigDecimal?

java - icepush-basic 示例什么都不做

java - 使用不同的配置取决于 spring Activity 配置文件