2017-06-15 52 views
-1

我的問題,我創建了一個對象,像這樣的值:Edge edge = new Edge(vertice1, vertice2, weight);和它添加到myEdgesList.add(邊緣);`java的轉化價值

有沒有在Java中的任何方式來創建相同列表中,但倒行第1行與第2行,如下所示:Edge edge = new Edge(vertice2, vertice1, weight);並將其添加到相同的列表。

LinkedList<Edge> edgesList = new LinkedList<>(); 
    LinkedList<Edge> secondInverted = new LinkedList<>(); 
    CSVReader reader = null; 
    try { 
     reader = new CSVReader(new FileReader(csvFile)); 
     String[] line; 
     while ((line = reader.readNext()) != null) { 
      Vertex one = findVertexByName(verticesList, line[0]); 
      Vertex second = findVertexByName(verticesList, line[1]); 
      edgesList.add(new Edge(one, second, Integer.parseInt(line[2]))); 
      secondInverted.add(new Edge(second, one, Integer.parseInt(line[2]))); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    List<Edge> newList = new ArrayList<>(edgesList); 
    newList.addAll(edgesList); 
    return newList; 

預先感謝您!

+1

當然。你有嘗試過什麼嗎?有沒有特定的問題?還是你要求我們爲你寫代碼? – shmosel

+1

答案似乎是在問題... – assylias

+0

我試過寫它,但它在一個列表中有另一個line2和line 1對象比在另一個列表中。它們必須是內部相同的物體。 – george

回答

0

我真的不知道你的問題。你想添加形狀一次line1和line2作爲參數,然後再次使用line2和line1作爲參數? 像

Shape s1 = new Shape(line1, line2, weight); 
Shape s2 = new Shape(line2, line1, weight); 
list.add(s1); 
list.add(s2); 
+1

line1和line2是對象,我想在第二個列表中相同的對象,他們不能在內存中的另一個地方,它們必須相同 – george

+0

如果它們是對象,那麼在創建它們時只是將它們引用到形狀上,它們應該是相同的對象。 你是如何確定它們不一樣的? – DerDingens

+0

按平等檢查,或者如果我打印他們,他們有另一個數字 – george

0

您可以以多種方式實現這一點,當你正在創建新的列表隨。通過它交換的屬性
1.克隆你的myShapeList和環路(:
如果你想同時讓他們,創建兩個形狀:

Shape shape = new Shape(line1, line2, weight); 
Shape shape2 = new Shape(line2, line1, weight); 
myShapeList.add(shape); 
myShapeList2.add(shape2); 

如果你想讓它以後,你既可以如果你的對象中有一個setter和getter)
2.創建一個新的myShapeList2和for(i=0;i<myShapeList.size();i++)創建一個新的Shape,其中line1 = myShapeList[i].line2line2 = myShapeList[i].line1,並將其添加到新列表中。 他們可以被預定義(如當你做你的第一個列表),或者你可以讓他們與你的對象的吸氣劑。

如果您嘗試取得進展並遇到任何問題,請發佈您的代碼。
UPDATE
要返回的合資新的列表同時包含你的列表嘗試:

List<Edge> newList = new ArrayList<>(edgesList); 
newList.addAll(secondInverted); 
List<Edge> invertedList = new ArrayList<>(secondInverted); 

您可以檢查出更多關於加入列表here,或者here

+0

試着創建一個簡單的例子,如果它不工作,只是發佈它 –

+0

請看上面的代碼示例 – george

+0

@george你想返回兩個列表:原始的和倒轉的列表? –