java - 这是 HashMap 的正确用例吗

标签 java performance algorithm hashmap complexity-theory

所以我有一个具有以下格式的任意长度的文件:

@HEADER1
//arbitrary lines of data
@HEADER2
//arbitrary lines of data 
....

我将提取每个 header 并将其保存在 Hashmap 中,然后我将开始(按顺序)解析另一个文件,该文件是 file1 的超集,例如具有以下格式:

@HEADER1
//arbitrary lines of data
//extended information
@HEADER2
//arbitrary lines of data
//extended information

所以我的想法是,我将构建一个 header 的 HashMap - 遍历文件 1 一次,然后我将遍历文件 2 并在其中的每个 header 上检查它是否在 hasmap 中,如果是的话 - 我会用数据做点什么。所以我想知道这是否是一个最佳解决方案 - 根据我的脑后计算,这将是 O(n) 而如果我有一个数组列表并且对于文件 2 中的每个标题检查它是否也在arraylist 会产生 O(n^2) 而 N 是 Arraylist 中标题的数量 - 我是否正确?

如果有更有效的方法,我很乐意领导它。

编辑:

我不能保证文件头的顺序是相同的,只是文件 1 中的内容应该存在于文件 2 中。另外 - 我真的不需要为 VALUE 保存任何东西,在这种情况下我只需要快速访问 key 。

最佳答案

HashMap 是一个非常好的选择。

所以接下来要考虑的是 HashMap 将存储什么。键可能是一个字符串,并且是 "@HEADER###" .但是数据呢?

对于 HashMap 中的值,您有几个选项。您可以使用字符串,但需要花一些时间仔细考虑您的数据是什么。它是原始数据行和您要添加的扩展信息吗?该数据是否代表结构化的东西?喜欢元素 list 吗?

如果您发现自己从 map 中获取了一个字符串值并进行了额外的处理,请考虑将该字符串替换为一个更能代表您的数据的类,这样您就可以得到类似于 HashMap<String, DoskiasData> 的值。 .

关于java - 这是 HashMap 的正确用例吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7903924/

相关文章:

java - JSP 验证用户来自上一页

java - 如何从谷歌日历获取日期时间

java - 保存 PMD Eclipse 插件的输出

jquery - 显示完整视频背景的最佳方式

algorithm - 什么是平滑多个二次贝塞尔曲线的好算法?

java - 在 Java 中编写自定义 BigInt 时如何使用大基数更有效

wpf - 如何提高 Canvas 渲染性能?

performance - 快速搜索 Tmemo 行的方法

python - 填充表面网格的算法

algorithm - 我怎么知道是否有其他算法与我的相似?