从文件中读取并使用给定的Info形成数据结构

时间:2014-05-01 23:39:13

标签: java data-structures

我试图使用java中的数据结构来模拟节点网络。让我们假设我有一个4个节点的网络,即0 1 2 3.现在我创建一个文本文件,其数据如下:

0 1
1 2
2 3
0 3

数据表示节点之间的连接。有一个从0到1等的链接。所有链接都是单向的。现在我想寻求你们的帮助,知道如何阅读这个文本文件和表单数据结构。哪种数据结构可行?我将在整个模拟过程中使用此数据结构在对象之间发送数据。使用树或哈希图哪一个会更好?在阅读文本文件和形成数据结构时,代码将如何?请帮帮我。

2 个答案:

答案 0 :(得分:1)

您可能要做的是创建一个Node类,其中包含一个字段,指示此节点能够连接到哪个节点。然后,您需要从文件中读取连接,并在Node构造函数中使用该数据来建立连接。

关于读取数据,这里有一种方法可以使用ArrayList,数组和缓冲读取器来完成此操作。首先设置ArrayList,然后使用BufferedReader获取连接,将每个对存储在一个数组中,并将其存储在ArrayList中进行引用。

    //ArrayList which will hold the arrays containing the connections
    ArrayList<int[]> connections = new ArrayList<int[]>(4);
    Path pathway = Paths.get("D:/Users/mgreenma/Desktop/tester.txt");//Path to file

    //Using a BufferedReader and FileReader we access the file
    try(BufferedReader reader = new BufferedReader(new FileReader(pathway.toFile()))){
        String line = ""; 
        Scanner sc = new Scanner(line);
        while((line = reader.readLine()) != null){ //Read each line until there are no more
            sc = new Scanner(line); //Set up a scanner
            int[] conn = new int[2]; //An array to hold each pair of nodes
            conn[0] = sc.nextInt(); //Get first node
            conn[1] = sc.nextInt(); //And the second
            connections.add(conn); //Add to the ArrayList
        }

        sc.close(); //Close scanner
    } catch (IOException io){
        System.out.println("Error: " + io.getMessage());            
    }

    for(int[] i : connections){//Print our connections list
        System.out.println("Connection: " + i[0] + "," + i[1]);
    }

祝你好运!

答案 1 :(得分:0)

我会使用linked list。当&#34;传输&#34;它们之间的数据,请确保标记哪个数据包启动了数据包,以便示例中的循环排列不会超出堆栈。