/** * Compare two edge iterables up to reordering. The edge value type needs * to be Comparable. * * @param e1 First edge iterable * @param e2 Second edge iterable * @param <I> Vertex id * @param <E> Edge value * @return Whether the two iterables are equal up to reordering */ public static <I extends WritableComparable, E extends WritableComparable> boolean sameEdges(Iterable<Edge<I, E>> e1, Iterable<Edge<I, E>> e2) { ArrayList<Edge<I, E>> edgeList1 = copy(e1); ArrayList<Edge<I, E>> edgeList2 = copy(e2); Comparator<Edge<I, E>> edgeComparator = new EdgeComparator<I, E>(); Collections.sort(edgeList1, edgeComparator); Collections.sort(edgeList2, edgeComparator); return equals(edgeList1, edgeList2); }