Java 将文件中的输入转换为对象引用

Java 将文件中的输入转换为对象引用,java,Java,我想知道的是,有没有一种方法可以读取文件,以便字符串“顶点”和“连接”可以转换为循环外部顶点对象的引用?字符串将与文件读取时共享相同的名称,并且从a-t开始读取,因此这不是问题。如果这是不可能的,有没有其他方法来解决这个问题?也许通过在循环中创建顶点对象而不覆盖它?我试过了,但每次循环都会覆盖它自己,因为每次都会创建一个具有相同值的新顶点。提前谢谢 public static void main(String[] args) throws FileNotFoundException {

我想知道的是,有没有一种方法可以读取文件,以便字符串“顶点”和“连接”可以转换为循环外部顶点对象的引用?字符串将与文件读取时共享相同的名称,并且从a-t开始读取,因此这不是问题。如果这是不可能的,有没有其他方法来解决这个问题?也许通过在循环中创建顶点对象而不覆盖它?我试过了,但每次循环都会覆盖它自己,因为每次都会创建一个具有相同值的新顶点。提前谢谢

    public static void main(String[] args) throws FileNotFoundException {

    File file = new File("ass3.txt");

    Scanner scan = new Scanner(f);

    if (file.exists() == false) {
        System.out.println("File doesn't exist or could not be found.");
        System.exit(0);
    }

    int nVertices = scan.nextInt();
    int nEdges = scan.nextInt();

    for (int i = 0; i < 21; i++) {
        String s = scan.nextLine();
    }

    Queue selectedSet = new Queue();
    Queue candidateSet = new Queue();

    Vertex a = new Vertex("a");
    Vertex b = new Vertex("b");
    Vertex c = new Vertex("c");
    Vertex d = new Vertex("d");
    Vertex e = new Vertex("e");
    Vertex f = new Vertex("f");
    Vertex g = new Vertex("g");
    Vertex h = new Vertex("h");
    Vertex i = new Vertex("i");
    Vertex j = new Vertex("j");
    Vertex k = new Vertex("k");
    Vertex l = new Vertex("l");
    Vertex m = new Vertex("m");
    Vertex n = new Vertex("n");
    Vertex o = new Vertex("o");
    Vertex p = new Vertex("p");
    Vertex q = new Vertex("q");
    Vertex r = new Vertex("r");
    Vertex s = new Vertex("s");
    Vertex t = new Vertex("t");

    for (int z = 0; z < 99; z++) {

        String vertex = scan.next();
        String connected = scan.next();
        int weight = scan.nextInt();

        vertex.addNeighbour(new Edge(weight,vertex,connected));
    }
publicstaticvoidmain(字符串[]args)抛出FileNotFoundException{
File File=新文件(“ass3.txt”);
扫描仪扫描=新扫描仪(f);
if(file.exists()==false){
System.out.println(“文件不存在或找不到”);
系统出口(0);
}
int nVertices=scan.nextInt();
int nEdges=scan.nextInt();
对于(int i=0;i<21;i++){
字符串s=scan.nextLine();
}
Queue selectedSet=new Queue();
队列候选集=新队列();
顶点a=新顶点(“a”);
顶点b=新顶点(“b”);
顶点c=新顶点(“c”);
顶点d=新顶点(“d”);
顶点e=新顶点(“e”);
顶点f=新顶点(“f”);
顶点g=新顶点(“g”);
顶点h=新顶点(“h”);
顶点i=新顶点(“i”);
顶点j=新顶点(“j”);
顶点k=新顶点(“k”);
顶点l=新顶点(“l”);
顶点m=新顶点(“m”);
顶点n=新顶点(“n”);
顶点o=新顶点(“o”);
顶点p=新顶点(“p”);
顶点q=新顶点(“q”);
顶点r=新顶点(“r”);
顶点s=新顶点(“s”);
顶点t=新顶点(“t”);
对于(intz=0;z<99;z++){
字符串顶点=scan.next();
String connected=scan.next();
int-weight=scan.nextInt();
添加邻居(新边(权重、顶点、连接));
}

您应该使用一个
贴图
。该贴图映射对象->对象,因此在本例中,我们希望它是字符串->顶点

一些示例代码:

HashMap<String, Vertex> vertices = new HashMap<String, Vertex>();
vertices.put("a", new Vertex("a"));
...
Vertex v = vertices.get(vertex);