gpt4 book ai didi

java - 我应该使用哪种数据结构来处理多值数据?

转载 作者:行者123 更新时间:2023-12-01 18:03:35 24 4
gpt4 key购买 nike

我开始从事java投资项目,我需要一个良好的数据结构来满足其要求。我在这里看到了一些类似问题的解决方案,但要求不同。

我的要求如下:

  1. 公司对象具有代码、公司名称、部门和财务数据字段。

  2. 搜索特定公司需要符号或公司名称。

首先,我考虑创建一个以符号为键、以公司名称为值的 map (为简单起见,假设我从此处获取数据: http://data.okfn.org/data/core/s-and-p-500-companies/r/constituents.csv ),但后来我又想了想,因为符号和公司名称都是公司对象数据字段,所以也许这不是面向对象的最佳解决方案。另外,请记住,它还需要诸如 vlookup 功能之类的功能,因此不仅可以通过使用其符号还可以通过其名称找到公司。

最能满足我的要求的 DS 是什么? map<String Symbol, Company company>有利于这个目的吗?

一些注意事项:

假设我还想拥有程序中的所有数据,而不仅仅是在网络上搜索它。

此 DS 中有 500 个对象,但可以添加或删除公司。

该解决方案应该能够轻松实现且高效地搜索特定行业的所有公司(或其他数据 - 例如市值高于 100 B$ 的所有公司等)。

我不知道用户输入的是符号还是公司名称。

数据还将保存到文件中。

该解决方案应仅使用 java core(而不是 commons、guava 等)。

最佳答案

如果您确实只想使用 Java 类,那么使用两个 Map 是最好的选择。虽然存储一个新公司确实需要两次操作,但您读取数据的频率可能比存储数据的频率高。只要将其存储为引用,第二个 Map 所需的额外空间就可以忽略不计。

但是,在不太可能的情况下,有一种确定的方法可以根据公司名称创建公司符号,反之亦然,则可以创建一个哈希函数来计算公司符号和名称的相同哈希值。在这种情况下,HashTable/HashMap 的效率会更高一些。

<小时/>

旁注:

由于您已经将数据保存到文件中(这是一种持久存储),因此我建议使用数据库。 DBMS 的唯一目的是有效地存储、管理和查询大量数据,这使其成为大多数情况下的最佳选择。借助 Java 的 SQL 库 java.sql.*,集成也非常容易。

关于java - 我应该使用哪种数据结构来处理多值数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38672256/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com