相关疑难解决方法(0)

delphi hashmap?

我有java代码从文本文件填充哈希映射.
HashMap<String, String[]> data = new HashMap<String, String[]>();

我用它来制作键值对.值是一个字符串数组.我必须迭代键值对的每个可能的组合(所以也必须迭代String [] - 数组).这适用于java,但现在我必须将其移植到delphi.有可能这样做吗?如何?谢谢!

delphi hashmap

14
推荐指数
1
解决办法
1万
查看次数

查找8GB +文本文件中的"密钥"

我有一些'小'文本文件,包含大约500000个条目/行.每行还有一个"键"列.我需要在一个大文件中找到这个密钥(8GB,至少2.19亿条目).找到后,我需要将大文件中的'Value'附加到小文件中,在行的末尾作为新列.

像这样的大文件:

KEY                 VALUE
"WP_000000298.1"    "abc"
"WP_000000304.1"    "xyz"
"WP_000000307.1"    "random"
"WP_000000307.1"    "text"
"WP_000000308.1"    "stuff"
"WP_000000400.1"    "stuffy"
Run Code Online (Sandbox Code Playgroud)

简单地说,我需要在大文件中查找"密钥".

显然我需要在RAM中加载整个表(但这不是我有32GB可用的问题).大文件似乎已经排序了.我得检查一下.
问题是我无法使用类似TDictionary的快速查找,因为正如您所看到的,密钥并不是唯一的.

注意:这可能是一次性计算.我将使用该程序一次,然后扔掉它.因此,它不一定是最佳算法(难以实现).它只需要在适当的时间内完成(如1-2天).PS:我更喜欢没有DB这样做.

我正在考虑这个可能的解决方案:TList.BinarySearch.但似乎TList仅限于134,217,727(MaxInt div 16)项目.所以TList不会工作.


结论:
我选择了Arnaud Bouchez解决方案.他的TDynArray令人印象深刻!如果你需要处理大文件,我完全推荐它.
AlekseyKharlanov提供了另一个不错的解决方案,但TDynArray已经实现.

delphi sorting algorithm search

13
推荐指数
3
解决办法
1960
查看次数

如何搜索通用TList <T>集合?

可能重复:
如何在通用TList中搜索具有特定字段值的记录?

我有一个集合

TList<TActivityCategory>
Run Code Online (Sandbox Code Playgroud)

TActivityCategory有一个String类型的Name属性,我想使用Name属性搜索TList.

我在TList <>中看到了BinarySearch,但这需要一个TActivityCategory实例.我只想传递一个名字的字符串.

我该怎么做呢?

delphi generics tlist

9
推荐指数
1
解决办法
8144
查看次数

标签 统计

delphi ×3

algorithm ×1

generics ×1

hashmap ×1

search ×1

sorting ×1

tlist ×1