在 Java 中创建、搜索和修改 (key ,value1, value2) 的最佳方式
Best way to create, search and modify (key ,value1, value2) in Java
我的程序正在搜索日志,并计算某些事件发生的次数(以及与每个事件关联的字节数)。我想将我感兴趣的事件存储为 (key, value1, value2),其中字符串是键,值是两个 long。我需要能够搜索结构中是否存在关键字,并且我需要能够修改两个 long 值。
我不会走数据库路线或将数据存储在另一个文本文件中。
我没有成功地使用 Stack Overflow 搜索找到一些东西,而且 Oracle 教程和集合文档对我帮助不大。我的选择(据我所知)是:
- 由(字符串,数组)组成的映射
- 2D 数组(我在其中调动字符串来回)
- 一个元组对象
我是否忽略了其他更优越的可能解决方案?如果不是,你建议我使用哪个?
提前致谢!
很难说 "best" 是什么意思,但这就是我要做的。我有一个带有字符串键和一个简单元组对象值的映射。您 "might" 能够手动获得更好的性能,但使用地图的集合实现是最容易使用的,更重要的是,其他人最容易理解谁以后可能需要 read/maintain 它。另外,要提防过早的优化。 :-)
与 #2 类似但同样令人反感的选项是使用 128 位 BigInteger
。一个更好的选择是使用 UUID
,这使得访问较高和较低的 long 值变得容易:
// set
map.put(key, new UUID(value1, value2);
// get
value1 = map.get(key).getMostSignificantBits();
最 "proper" 的解决方案通常是创建一个自定义 class 来传达值代表什么以及它们之间的关系。如果他们没有关系并且他们只是共享一个公共密钥,则可能值得为每组值保留一个单独的映射。
我的程序正在搜索日志,并计算某些事件发生的次数(以及与每个事件关联的字节数)。我想将我感兴趣的事件存储为 (key, value1, value2),其中字符串是键,值是两个 long。我需要能够搜索结构中是否存在关键字,并且我需要能够修改两个 long 值。
我不会走数据库路线或将数据存储在另一个文本文件中。
我没有成功地使用 Stack Overflow 搜索找到一些东西,而且 Oracle 教程和集合文档对我帮助不大。我的选择(据我所知)是:
- 由(字符串,数组)组成的映射
- 2D 数组(我在其中调动字符串来回)
- 一个元组对象
我是否忽略了其他更优越的可能解决方案?如果不是,你建议我使用哪个?
提前致谢!
很难说 "best" 是什么意思,但这就是我要做的。我有一个带有字符串键和一个简单元组对象值的映射。您 "might" 能够手动获得更好的性能,但使用地图的集合实现是最容易使用的,更重要的是,其他人最容易理解谁以后可能需要 read/maintain 它。另外,要提防过早的优化。 :-)
与 #2 类似但同样令人反感的选项是使用 128 位 BigInteger
。一个更好的选择是使用 UUID
,这使得访问较高和较低的 long 值变得容易:
// set
map.put(key, new UUID(value1, value2);
// get
value1 = map.get(key).getMostSignificantBits();
最 "proper" 的解决方案通常是创建一个自定义 class 来传达值代表什么以及它们之间的关系。如果他们没有关系并且他们只是共享一个公共密钥,则可能值得为每组值保留一个单独的映射。