我想将N个元素相互链接。这意味着元素1将与元素1,元素2,元素3 ......元素N具有特定的值关系。类似地,元素2将具有与元素1,元素2,元素3 ...等的值关系。 。 此外,我想将所有这些值存储在文件中并定期修改它。我更喜欢用Java编码。
这个问题的完美解决方案是什么?
请帮助我,我很震惊。
答案 0 :(得分:0)
你有一个网格。每个元素与每个其他元素具有关系值,即存在(元素个数)^ 2个关系值。
我会使用一个数组。然后序列化数组以将其保存为文件,对其进行反序列化以加载它,编辑它然后重新序列化。
这里有一些要保存到文件并返回的java代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Arrays;
public class Grid {
public static void main(String[] args) throws Exception {
// your data grid
int num_elements=10;
double[][] grid=new double[num_elements][num_elements];
// populate the grid
// note grid[m][n] holds the value for the relationship
// between element m and element n
grid[0][0]=1.0;
grid[0][1]=0.5;
// etc...
System.out.println(Arrays.deepToString(grid));
// save the grid
write_object(grid, "grid.data");
// clear the grid (eg happens when you rerun your program)
grid=null;
// load the grid
grid=(double[][])read_object("grid.data");
System.out.println(Arrays.deepToString(grid));
// do some changes
grid[0][0]=2.0;
grid[0][1]=1.5;
// etc...
// save the grid (again)
write_object(grid, "grid.data");
// and so on
}
public static void write_object(Object no, String nfilename) {
try {
File f=new File(nfilename);
if (f.exists())
f.delete();
FileOutputStream fos=new FileOutputStream(nfilename);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(no);
oos.close();
}
catch (IOException e) {
e.printStackTrace();
}
}
public static Object read_object(String nfilename) {
try {
FileInputStream fis=new FileInputStream(nfilename);
ObjectInputStream ois = new ObjectInputStream(fis);
Object o=ois.readObject();
ois.close();
return o;
}
catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
return null;
}
}