我似乎在使用/理解集合时遇到问题。在JGraphT
中有一个功能edgeSet()
。我想将所有边存储在数组中,所以我这样做了:
DefaultWeightedEdge edgesContained[]= (DefaultWeightedEdge[]) Graph.edgeSet().toArray(); //compiler returns this line as one with error
for ( int i=0; i<=numberOfEdges; i++) {
setRandomWeight(edgesContained[i], randomWeight());
}
但是我得到的输出是
线程“主”中的异常java.lang.ClassCastException:[Ljava.lang.Object;无法转换为[Lorg.jgrapht.graph.DefaultWeightedEdge;
为什么会这样,它应该如何正确显示?
最佳答案
Graph.edgeSet().toArray()
将返回一个Object[]
,该类型不能转换为DefaultWeightedEdge[]
。而是使用Graph.edgeSet().toArray(new DefaultWeightedEdge[0])
。