我知道一个常见的性能重构是替换简单for的System.arraycopy.
我想问一下:
system.arraycopy究竟何时开始有意义(考虑到它是本机方法调用).复制小事说,<32有什么优势吗?
这是我的印象,还是不可能简单地使用arraycopy复制(有效)这样的循环:
for (int j = 0; j < 2; ++j) {
vpr[m][s + j][i] = vr[j];
}
Run Code Online (Sandbox Code Playgroud)我需要能够有一个n维字段,其中n基于构造函数的输入.但我甚至不确定这是否可行.是吗?
我正在尝试创建一个2D拼图滑块游戏.我创建了自己的对象gamestate来存储父游戏状态和新的游戏状态,因为我计划使用BFS解决它.示例数组看起来像
int[][] tArr = {{1,5,2},{3,4,0},{6,8,7}};
Run Code Online (Sandbox Code Playgroud)
这暗示着
[1,5,2,3,4,0,6,8,7]
为了存储这个状态,我使用了以下for循环,它带来了indexOutOfBounds exceptions.
public class GameState {
public int[][] state; //state of the puzzle
public GameState parent; //parent in the game tree
public GameState() {
//initialize state to zeros, parent to null
state = new int[0][0];
parent = null;
}
public GameState(int[][] state) {
//initialize this.state to state, parent to null
this.state = state;
parent = null;
}
public GameState(int[][] state, GameState parent) {
//initialize this.state to state, this.parent to parent
this.state …Run Code Online (Sandbox Code Playgroud) 我目前正在创建一个Android应用程序,并认为我在内部保存数据有问题等.事实证明问题与此无关,而是我对Java的理解.
问题是,当我这样做
myObject1 = myObject2;
并使用myObject1在myObject3这可能是一个列表,或任何(对我来说一个Hashtable),然后改变myObject2,myObject3得到相应的改变,也是如此.这叫什么,我在哪里可以了解更多信息?如何分配myObject2到myObject1,这样myObject1是完全"独立"?
我一直在这个小项目,我花了20个小时解决(没有运气或结果)代码中的一个主要问题.现在,我发现真正的问题是copy()函数不能正常工作.
我究竟做错了什么?
这是我对特定问题所做的例子:
package cloneobject;
import java.util.Arrays;
public class CloneObject {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
clone(new int[3][3]);
}
public static void clone(int[][] x) {
int[][] y = (int[][]) x.clone();
System.out.println("x=");
PrintFieldImage(x);
System.out.println("y=");
PrintFieldImage(y);
x[1][1] = 3;
System.out.println("x=");
PrintFieldImage(x);
System.out.println("y=");
PrintFieldImage(y);
y[2][2] = 4;
System.out.println("x=");
PrintFieldImage(x);
System.out.println("y=");
PrintFieldImage(y);
}
public static void PrintFieldImage(int[][] field) {
if (field != null) {
int x;
for (x …Run Code Online (Sandbox Code Playgroud)