我正在通过读取格式为的文件创建一个包含节点(整数值)和边(源、目标和权重)的图
1 51 1
1 72 2
1 77 1
等等
Set<Node> nodes = new HashSet<Node>(); //a set of the nodes of a graph
ArrayList<Node> nodeList = new ArrayList<Node>();
ArrayList<Edge> edgeList = new ArrayList<Edge>();
...
Node node1=new Node(Integer.parseInt(temprelation[0]));
Node node2=new Node(Integer.parseInt(temprelation[1]));
nodes.add(node1);
nodes.add(node2);
Edge edge = new Edge(node1, node2, Integer.parseInt(temprelation[2]));
edgeList.add(edge);
}
类节点还有一个字段“邻居数”,我想遍历所有边并在源或目的地出现时增加邻居的数量。
for (int edge=0; edge<graph.getEdges().size(); edge++){
graph.getEdges().get(edge).getSource().neighborUp();
graph.getEdges().get(edge).getDestination().neighborUp();
}
奇怪的是,虽然对象看起来是一样的(我用等号检查过),但计数器并没有上升。例如,对于 1,它与第一条边一起上升一次,但当我尝试在第二条边上增加它时,它不会上升。在增加之前考虑第二条边时,它以某种方式显示邻居的数量为 0,尽管我增加了已经在第一条边中的第一个节点的邻居数量。因此,如果我在增量之前和之后打印计数器,我总是会得到 0 1 0 1 ,就好像涉及其他一些对象一样。