簡體   English   中英

如何將字符串“轉換”為頂點以在 Java 中創建圖形?

[英]How can I 'convert' a string to a vertex to create a graph in Java?

所以我有這個項目,它包括根據用戶輸入創建一個加權圖。 輸入文件由一個 .txt 文件組成,其中第一行包含所有城市的名稱,隨后的每一行包含兩個城市之間的距離。 我做得很好,直到我需要添加圖形邊緣的部分。 我為頂點和邊創建了類,因此每條邊和頂點都是來自這些類的對象。 我創建了一個列表來存儲頂點:

public static List<Vertex> vertexList = new ArrayList();

然后是一個 for 循環,它添加與用戶輸入一樣多的頂點:

for (int i = 0; i < cities.length; i++) { 
            vertexList.add(new Vertex (cities[i])); 

其中, cities是一個數組,其中包含輸入文件中城市的名稱。

城市的輸入格式以及它們之間的距離類似於:'300-Paris-London'。 這意味着巴黎和倫敦之間有 300 公里。 所以我試圖做的是創建邊緣是這樣的:

for (int j = 0; j < vertexList.size(); j++) {
            if (vertexList.get(j).toString() == arrays.get(j)[1]) {
                vertexList.get(j).addEdge(new Edge(arrays.get(j)[2], Integer.parseInt(arrays.get(j)[0])));
            }

其中arrays是一個包含多個數組的 ArrayList,這些數組代表每對城市及其距離。 因此,在前面的示例中,'300-Paris-London' 將是這些數組之一,它們的長度均為 3。

基本上我試圖用這個 for 循環做的是遍歷整個頂點列表,使用每個頂點的 String 值並將其與包含城市對的每個數組進行比較,如果頂點的 String 值匹配索引 1 處的元素,然后從所述頂點添加一條新邊到對應於該數組索引 2 處元素的頂點。 問題是 1. toString()函數似乎沒有給我每個頂點的真正 String 值,而是它的一個不可讀的版本,以及 2. 我不知道如何從這些轉換一個 String數組並將其轉換為 'Vertex' 數據類型,因為 Edge 構造函數的參數是(Vertex to, int weight)

如何在字符串和“頂點”數據類型之間進行轉換? 或者不可能? 有沒有更好的方法來做我在這里想做的事情? 提前致謝

你的問題很復雜。 我想創建一個可以使用構造函數解析字符串表示的 Vertex 類(您可能已經完成)是一個好主意。 如果 '300-Paris-London' 應該是一個例子,那么這可以很容易地解決,例如使用 String.split(..) 方法(例如 vertexString.split("-"))。 什么也可以幫助您:您可以覆蓋 Vertex 類中的 toString() 方法並創建所需的字符串表示形式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM