【问题标题】:Storing data in 2D array list from result of a Database query根据数据库查询的结果将数据存储在二维数组列表中
【发布时间】:2013-11-20 02:58:24
【问题描述】:

我正在查询一个数据库,其输出是用户 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

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

【问题讨论】:

  • 您是否有义务以这种方式存储标签?规范化的设计会更容易使用

标签: java mysql sql multidimensional-array arraylist


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2014-11-19
    • 2012-06-12
    • 1970-01-01
    • 2012-06-02
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    相关资源
    最近更新 更多