Since we already walk through the edges for validation purposes in the constructor, and getEdgeList is likely to be called often, maybe we should be saving the edge list in the constructor?  Likewise for the weight.