@@ -77,18 +77,52 @@ abstract class DataConvertor<V, E> {
7777 };
7878 } else {
7979 if (g.edgesBetween[start] != null ) {
80- if (g.edgesBetween[start]! [end] != null ) {
80+ if (g.edgesBetween[start]! [end] != null &&
81+ ! g.edgesBetween[start]! [end]! .contains (result)) {
8182 g.edgesBetween[start]! [end]! .add (result);
8283 } else {
8384 g.edgesBetween[start]! [end] = [result];
8485 }
8586 } else if (g.edgesBetween[end] != null ) {
86- if (g.edgesBetween[end]! [start] != null ) {
87+ if (g.edgesBetween[end]! [start] != null &&
88+ ! g.edgesBetween[end]! [start]! .contains (result)) {
8789 g.edgesBetween[end]! [start]! .add (result);
8890 } else {
8991 g.edgesBetween[end]! [start] = [result];
9092 }
9193 }
9294 }
9395 }
96+
97+ /// Add data and component when absent.
98+ ///
99+ /// 提供边的去重方法,当不存在时添加
100+ Edge addEdge (E e, Graph graph) {
101+ var sameEdge = graph.edges.where ((edgeIn) => edgeIn == e).toList ();
102+ Edge edge;
103+ if (sameEdge.isEmpty) {
104+ edge = convertEdge (e, graph);
105+ edgeAsGraphComponse (e, graph, edge);
106+ graph.edges.add (edge);
107+ } else {
108+ edge = sameEdge.first;
109+ }
110+ return edge;
111+ }
112+
113+ /// Add data and component when absent.
114+ ///
115+ /// 提供边的去重方法,当不存在时添加
116+ Vertex addVertex (V v, Graph graph) {
117+ Vertex vertex = convertVertex (v, graph);
118+ var sameVertex =
119+ graph.vertexes.where ((edgeIn) => edgeIn == vertex).toList ();
120+ if (sameVertex.isEmpty) {
121+ vertexAsGraphComponse (v, graph, vertex);
122+ graph.vertexes.add (vertex);
123+ } else {
124+ vertex = sameVertex.first;
125+ }
126+ return vertex;
127+ }
94128}
0 commit comments