【发布时间】:2013-08-26 02:14:33
【问题描述】:
在我的 java 程序中,我查询一个数据库并获得一个结果集。检索到的字段如下:
- server_id
- threat_level
- client_id
- 攻击次数
其中每条记录代表来自某个 IP 的攻击。我不需要 IP,但想知道基于威胁级别沿 x 轴绘制的特定服务器上的攻击总数,以及特定客户端沿 y 轴组织的所有服务器上的攻击总数降序。
查询后,我将结果集的字段存储到对象的哈希图中,如果该键已存在,则检查哈希图后,键为 server_id;如果是,则更新攻击总数。通过这样做,我可以获取服务器的重复记录,将其保留为一个对象,并且只需汇总名为“num_of_attacks”的字段。现在我的下一步是组织数据以绘制图表的最后一步,但由于我的经验不足,我不确定正确的方法。我的数据库头脑告诉我使用字段 client_id 和 total_num_attacks 创建另一种类型的列表或集合,其中 client_id 是键,total_num_attacks 表示该客户端所有服务器上的所有攻击的总和,这可以以某种方式链接到 hashmap通过 client_id 的服务器。所以 client_id 是一组中的“主键”和另一组中的“外键”,这将允许我首先组织客户端,然后绘制他们的服务器。
我的问题是,这可能吗?我研究了 LinkedLists,但我不确定它是否能完全满足我的需求。还有其他更适合我需要的数据结构吗?
【问题讨论】:
-
我认为这是一个数据库概念?
-
@AndroidKiller 是的,我想是的,但这有可能在 Java 中实现吗?
-
@solleks 在 Java 中你有对象而不是表,你可以将一个对象作为另一个对象的成员,这有点类似于外来键
-
我没有阅读你的要求,但在 java Set 是一个集合,如果你可以使用它,它将只存储唯一值。
-
是的,有可能。如果您只需要将服务器列表映射到客户端(我之前不明白),您可以使用 HashMap,其中键是客户端的 ID,值是包含服务器 ID 的列表。类似于:HashMap
>
标签: java list data-structures hashmap