所以我有一个名为 Graph 的 ArrayList 有 8 个条目。条目 1 是对称为“源”的整数数组的引用,条目 2-8 是对称为“数据”的整数数组的引用。但是,我真正想做的只是将数据保存在“源”和“数据”中,而不是保存对它们的引用。现在正因为如此,更改“数据”会破坏“图形”,编辑存储在“图形”中的数据很麻烦。
在这一点上,我希望能够在 while/for 循环中一次从“Graph”中提取一个数据,将其存储到一个名为 temp 的整数数组中,修改 temp,然后将其存储回“Graph” ,但这不起作用,因为这最终意味着“Graph”中的每个条目都只是对“temp”的引用,它们最终都会具有相同的值,这当然是错误的。
在 Graph 中编辑数据或重建数据以便避免这个问题的好方法是什么?
这是代码。我正在从一个告诉我如何构建图表的文本文件中读取数据。
BufferedReader br = new BufferedReader(new FileReader("graph.txt"));
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while(line.charAt(z)!=' '){
sizeString=sizeString+line.charAt(z);
z++;
}
size = Integer.valueOf(sizeString);
int graph[][] = new int[size][size];
while (line != null) {
sb.append(line);
sb.append("\n");
line = br.readLine();
z=0;
if(line != null){
while(line.charAt(z)!=' '){
xString=xString+line.charAt(z);
z++;
}
z++;
while(line.charAt(z)!=' '){
yString=yString+line.charAt(z);
z++;
}
z++;
while(z<line.length()){
weightString=weightString+line.charAt(z);
z++;
}
System.out.println(xString+yString+weightString);
x=Integer.valueOf(xString);
y=Integer.valueOf(yString);
weight=Integer.valueOf(weightString);
graph[x][y]=weight;
xString="";yString="";weightString="";
vertices++;
}
}
//Set non adjacent node weights to infinity
ArrayList Graph = new ArrayList();
int[] source = new int[2];
int[] data = new int[2];
source[0]=0;
source[1]=-1;
Graph.add(0,source);
data[0]=99999; //Represents 'infinity'
data[1]=-1; //No source node
x=1;
while(x<graph.length){
Graph.add(x, data);
x++;
}