背景介绍
项目通过jsplumb构建出有向图,业务需要可能需要根据当前节点获取上一个节点,数据库只保留node信息和edge信息,所以需要用到edge所有数据来反推出整个图。并且快速实现业务上变动的需求。
解决思路
通过遍历edge算法当前这个图里面的所有路径,所有的业务需求都通过路径来实现。
以下代码为去除业务的简易版。
核心代码
package com.xmasq.graph;
import java.util.*;
/**
* 识别有向图中的所有路径
*
* @author guoyu.huang
* @version 1.0.0
*/
public class Graph {
/**
* 所有路径图
*/
private List<List<Node>> allWay = new ArrayList<>();
/**
* 通过线构建图
*
* @param edgeList
*/
public Graph(List<Edge> edgeList) {
Map<Node, Set<Node>> map = new HashMap<>();
Set<Node> startSet = new HashSet<>();
Set<Node> startSetBack = new HashSet<>();
Set<Node> endSet = new HashSet<>();
edgeList.stream().forEach(flowData -> {
startS