如何java代码实现首尾相连的两列数据生成所有的顺序链

lewis_zhou 2019-12-25 10:47:04
如题:
task to_task
1 2
1 3
2 3
2 6
3 4
task和to_task两列数据,以task=1为起点,to_task与task首尾交叉关联,形成3条顺序链:
1-2-3-4
1-2-6
1-3-4
如何用JAVA代码实现打印上述所有的审批链。
...全文
457 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lewis_zhou 2019-12-25
  • 打赏
  • 举报
回复
只要能实现,什么方式都可以哈。
weixin_42353139 2019-12-25
  • 打赏
  • 举报
回复
使用递归的方式可以么,就是效率会有点低
dkwuxiang 2019-12-25
  • 打赏
  • 举报
回复
public class Test {
	public static void main(String[] args) {
		List<Source> list = new ArrayList<Source>();
		list.add(new Source("1","3"));
		list.add(new Source("2","6"));
		list.add(new Source("1","2"));
		list.add(new Source("3","4"));
		list.add(new Source("2","3"));
		List<String> result = new ArrayList<String>();
		for (Source source : list) {
			if (source.task.equals("1")) {
				StringBuffer str = new StringBuffer(source.task + "-" + source.toTask);
				getChild(list, result, source, str);
				result.add(str.toString());
			}
		}
		System.out.println(result);
	}

	private static void getChild(List<Source> list, List<String> result, Source parent, StringBuffer str) {
		String tag = null;
		String beginStr = str.toString();
		for (Source source : list) {
			if (parent.toTask.equals(source.task)) {
				if (source.task.equals(tag)) { // 重复出现时
					StringBuffer newStr = new StringBuffer(beginStr + "-" + source.toTask);
					ArrayList<Source> arrayList = new ArrayList<Source>(list);
					arrayList.remove(source);
					getChild(arrayList, result, source, newStr);
					result.add(newStr.toString());
				} else {
					tag = source.task;
					str.append("-" + source.toTask);
					ArrayList<Source> arrayList = new ArrayList<Source>(list);
					arrayList.remove(source);
					getChild(arrayList, result, source, str);
				}

			}
		}
			
	}
}

class Source {
	public String task;
	public String toTask;
	public Source(String task, String toTask){
		this.task = task;
		this.toTask = toTask;
	}
}

51,407

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧