处理列表仅用作临时容器的项目列表时- 您建议我使用哪些列表类型?
一世
能够在不造成泄漏的情况下实现这一目标:
function GetListWithItems: ISomeList;
begin
Result := TSomeList.Create;
// add items to list
end;
var
Item: TSomeType;
begin
for Item in GetListWithItems do
begin
// do something
end;
end;
Run Code Online (Sandbox Code Playgroud)
我有什么选择?这是关于德尔福2009年,但为了知识,请提及2010年以上是否有这方面的新内容.
我正在重写我之前写过的Delphi 6站点映射器应用程序的spidering/crawler部分.该应用程序蜘蛛网站.
我需要管理两个方面:
以前这些分别是使用TList和StringList完成的.显然,这些性能在具有数千个链接的站点上降级.
我的问题是,应该为这些队列/列表使用什么来确保最佳性能?我对哈希的经验很少.
关于通用的一切TList.我有这个结构:
Type
TExtract = record
Wheel: string;
Extract: array [1..5] of Byte;
end;
TExtractList = TList<TExtract>
TEstr = record
Date: TDate;
Extract: TExtractList;
end;
TEstrList = TList<TEstr>;
Run Code Online (Sandbox Code Playgroud)
主要列表是TExtrList在这个列表中我有所有日期和日期所有轮子与该日期.我想搜索是否存在日期.如果不存在,我TExtractList从TEstr信息中添加Extract的子列表.当我从TExtrListDelphi 搜索关于TEstr类型的问题时.我只需要搜索Date.那么如何在通用中搜索单个字段TList?
PS:我删除了上一篇文章,因为在这里我试图更好地解释.
我想从散列图中检索k,v对.这些托管是这样的:
a = 3,4
b = 5,6
Run Code Online (Sandbox Code Playgroud)
等等.我需要这些值的组合.
a=3, b=5.
a=3, b=6.
a=4, b=5.
a=4, b=6.
Run Code Online (Sandbox Code Playgroud)
我不知道有多少个键和多少个值.使用entryset我可以得到值而不是组合.它看起来像递归,但如何?
这是我的代码:
HashMap<String, String[]> map = new HashMap<String, String[]>();
BufferedReader file = new BufferedReader(new FileReader("test.txt"));
String str;
while ((str = file.readLine()) != null) {
... logic
map.put(key, value);
}
System.out.println("number of keys: " + map.size());
for(Entry<String, String[]> entry : map.entrySet()) {
for(String value : entry.getValue()) {
System.out.println(entry.getKey() + ": " + value);
}
}
file.close();
Run Code Online (Sandbox Code Playgroud)