0

我正在查询一个数据库,其输出是用户 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 以便拆分和删除 <> 并将标签存储在 ArrayList 中。

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

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

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

4

1 回答 1

0

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

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

这是在谈论如何在 Java 中存储它。在 SQL 中,这是一种糟糕的存储标签的方式。为了规范化,你应该有一个类似于TagNames表的东西,带有TagIdTagName列,TagId作为主键 - 这是定义实际标签的地方。然后,说可以应用标签的表名为Things,主键为ThingId,您将拥有一个ThingsTags表,其中包含 和 列ThingIdTagId它们都引用另一个表中各自的列,以将两者关联起来。我不确定这有多大意义,但我现在不想制作图表。

于 2013-11-08T08:30:35.487 回答