1

我目前正在编写一个处理由 jgrapht 库创建的图形的程序。我有多个表格的图表:

UndirectedGraph <Integer, DefaultEdge> g_x = new SimpleGraph<Integer, DefaultEdge (DefaultEdge.class);
g.addVertex(1);
g.addVertex(2);
g.addVertex(3);
g.addEdge(1, 2);
g.addEdge(2, 4);
...

这是与我作为文件提供的街道地图相关联的常量图。现在,我在 main 方法中声明了所有图表,并且在加载地图时仅引用我想要的图表。我想做的是让另一个文件与每个地图配对(即 map1.map 和 map1.graph),这样当我从文件加载地图时,我也可以像这样加载图表:

map = loadMap(mapName);
g_x = loadGraph(mapName);

其中 mapName 是文件名前缀,不必将其存储在我的源代码中。是否可以在 java 中执行此操作,如果可以,我将如何创建文件并加载它们?是否也可以使用通用对象来做到这一点?

4

1 回答 1

0

一种选择是将对象序列化为 xml 或 json(如果您真的需要,可以将 .xml 更改为 .map)。然后,您可以在代码中为要加载的每个对象打开 xml。

序列化:

File file = new File(**filename**);
FileOutputStream out = new FileOutputStream(file);
XStream xmlStream = new XStream(new DomDriver());
out.write(xmlStream.toXML(**ObjectToSave**).getBytes());
out.close();

反序列化:

 try {
     XStream xmlStream = new XStream(new DomDriver());
     state = (**ClassNameYouWishToSave**) xmlStream.fromXML(new FileInputStream(**filename**));
 } catch(IOException e) { e.printStackTrace(); }

您将需要这些导入:

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

这是一种简单的方法,但它确实有效。希望能帮助到你。

于 2014-07-07T23:47:47.543 回答