从数据库中循环取值的算法 java

来源:百度知道 编辑:UC知道 时间:2024/07/07 03:08:28
表A结构如下:
A B (两字段,A,B)
a b
b c
c d
d e

要求:写个方法,任意传入一个A字段或B字段存在的值,返回与之相关联的所有其他的值。循环查找,知道找不到为止。

例如:传入a 应能查出b,c,d,e.
传入b 应能查出a,c,d,e
传入d 应能查出a,b,c,e
传入e 应能查出a,b,c,d

将查出的结果存入list,供其他方法调用,请大家帮忙写一个或提供个准确的思路。

我设计了一个思想并实现运行成功:
设计思想:
把数据库表中数据全部查出。每一个数据为一个结点,比如说楼主表的A,B字段中共有数据a、b、c、d、e,则这5个数据为5个结点。创建一个双向图表示节点间的关系。比如说楼主提供的数据的双向图为a<--->b<--->c<--->d<--->e,在我的程序中表现为一个结点类的集合。求结果的时候只要求从指定节点能够到达的节点集合就可以了。
求结果时使用递归调用,原理是:求结点a能到达的节点=求结点a关联节点能到达的节点。

程序运行结果:
数据库数据:
+------+------+
| A | B |
+------+------+
| a | c |
| a | d |
| b | e |
| e | f |
+------+------+
result[a]=[a, c, d]
result[c]=[c, a, d]
result[e]=[e, b, f]
更改数据库数据,添加a和e的关联:
mysql> select * from aaa;
+------+------+
| A | B |
+------+------+
| a | c |
| a | d |
| b | e |
| e | f |
| e | a |
+------+------+
5 rows in set (0.00 sec)
result[a]=[a, c, d, e, b, f, a]
从这个结果看出第一个数据库数据a c d和 b e f是独立的两块,建立了a e的关联后,成了一个整体的块,因此从a节点能到达所有节点。

程序代码:
本程序是使用的Mysql数据库,使用时请导入Mysql数据库驱动。创建TestJdbc