gpt4 book ai didi

Java:未正确添加顶点

转载 作者:行者123 更新时间:2023-11-30 03:56:32 25 4
gpt4 key购买 nike

图测试 = new Graph(testVertices, testEdges);我有点困惑为什么会得到以下结果:

   List<Vertex> temp = test.getVertices(); 
System.out.println(testVertices.size()); //size is 10 as expected
System.out.println(temp.size()); //size is now 0... but should be 10

这是我的 getVertices() 方法,如下

  public List<Vertex> getVertices(){
List<Vertex> theVertices = new ArrayList<Vertex>();
for(int i=0;i<V.size();i++){
System.out.println("happen");//never reached...
theVertices.add(V.get(i));
}
return theVertices;
}

当我调用 temp.size() 时,我应该得到 10,但我不明白为什么我得到 0。有人能解释一下吗?

谢谢。

已编辑

导入java.util.*;公共(public)类图{

private ArrayList<Vertex> V;
private ArrayList<Edge> E;

//constructor
public Graph(Collection<Vertex> v, Collection<Edge> e){

V=new ArrayList<Vertex>();
E=new ArrayList<Edge>();
}

public List<Vertex> getVertices(){
List<Vertex> theVertices = new ArrayList<Vertex>();
for(int i=0;i<V.size();i++){
System.out.println("happen");
theVertices.add(V.get(i));
}
return theVertices;
}

public static void main(String[] args){
Vertex A = new Vertex("A");
Vertex B = new Vertex("B");
Vertex C = new Vertex("C");
Vertex D = new Vertex("D");
Vertex E = new Vertex("E");
Vertex F = new Vertex("F");
Vertex G = new Vertex("G");
Vertex H = new Vertex("H");
Vertex I = new Vertex("I");
Vertex J = new Vertex("J");

List<Vertex> testVertices = new ArrayList<Vertex>();
testVertices.add(A);
testVertices.add(B);
testVertices.add(C);
testVertices.add(D);
testVertices.add(E);
testVertices.add(F);
testVertices.add(G);
testVertices.add(H);
testVertices.add(I);
testVertices.add(J);

Graph test = new Graph(testVertices, testEdges);
List<Vertex> temp = test.getVertices();
System.out.println(testVertices.size());
System.out.println(temp.size()); //size is now 0...
for(int i=0;i<temp.size();i++){
System.out.println(temp.get(i).getLabel());
}

最佳答案

您可能想要在构造函数中执行的操作是复制参数:

//constructor
public Graph(Collection<Vertex> v, Collection<Edge> e){

V=new ArrayList<Vertex>( v );
E=new ArrayList<Edge>( e );
}

如果您不想要自己的副本,但更喜欢保留参数中传递的顶点和边的集合,那么您应该执行@Bhesh Gurung 建议的操作,但这对我来说不太好,因为您无法获得确保在您构建图形对象后有人不会修改顶点或边的列表。

关于Java:未正确添加顶点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23039632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com