我有问题,我创建了一个具有如下值的对象:Edge edge = new Edge(vertice1, vertice2, weight);
并将其添加到myEdgesList.add(edge);`
在Java中是否有任何方法可以创建相同的列表,但使用反向的line1和line2,如下所示: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;
提前谢谢!
答案 0 :(得分: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 :(得分:0)
您可以通过多种方式实现此目的,具体取决于您创建新列表的时间 如果您想同时制作它们,请创建两种形状:
Shape shape = new Shape(line1, line2, weight);
Shape shape2 = new Shape(line2, line1, weight);
myShapeList.add(shape);
myShapeList2.add(shape2);
如果你想稍后再做,你可以:
1.克隆你的myShapeList,并循环遍历它的属性(如果你的对象中有一个setter和getter)
2.创建一个新的myShapeList2,for(i=0;i<myShapeList.size();i++)
使用line1 = myShapeList[i].line2
和line2 = myShapeList[i].line1
创建一个新的Shape,并将其添加到新列表中。
它们可以是预定义的(比如当你制作你的第一个列表时),或者你可以在对象中使用getter来获取它们。
如果您尝试取得一些进展并遇到任何问题,请发布您的代码
的更新强>
要返回包含您的列表的联合新列表,请尝试:
List<Edge> newList = new ArrayList<>(edgesList);
newList.addAll(secondInverted);
List<Edge> invertedList = new ArrayList<>(secondInverted);