我似乎在使用/理解集合时遇到问题。在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])

10-06 05:59