将数据存储在数据库查询结果的2D数组列表中

时间:2013-11-08 07:00:31

标签: java mysql sql multidimensional-array arraylist

我正在查询一个数据库,其输出是用户ID和此用户使用的标签,但标签采用单一字符串格式,并用<>括起来。

我正在使用这些语句来存储结果

String str1 = insertStmt.getString(1);//User ID
String str2 = insertStmt.getString(2);//String for Tags

因此输出可以被认为是:

ID   Tags
1    <Java><SQL>
2    <Battery><Installation>
1    <Installation>
...and so on

在此之后,我正在处理str2,以便拆分并删除&lt;&gt;并将标记存储在ArrayList中。

我的主要目标是处理这些数据,以便我可以为每个用户ID列出所有不同的标签。输出应该是:

ID  Tags
1   Java,SQL,Installation.....
2   Battery,Installation...
.
.
.
and so on

我在进行输出的第二次处理时遇到了麻烦。基本上我无法想象我应该如何继续以及我应该使用哪种数据结构来存储这种关联。

1 个答案:

答案 0 :(得分:0)

我想你会想要HashMap<Integer, HashSet<String> >。这将允许您存储每个id的所有唯一标记。

要插入,您需要检查它是否包含您使用containsKey( id )插入的ID。如果没有,请创建一个新的HashSet<String>,插入该标签,然后添加标签。如果密钥在那里,只需使用Add( tag )添加密钥。

这是在谈论如何将它存储在Java中。在SQL中,这是存储标记的可怕方法。要进行规范化,您应该使用TagNames表,TagIdTagName列,TagId作为主键 - 这是定义实际标记的位置。然后,说明可以应用哪些代码的表名为Things,主键为ThingId,您将拥有一个ThingsTags表,其中包含ThingId列和TagId,两者都引用了另一个表中各自的列,将两者联系起来。我不确定这有多大意义,但我现在不想制作图表。