2017-06-15 74 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你想返回两个列表:原始的和倒转的列表? –