使用 HashTable 对文件组进行排序 - Visual Basic

Posted

技术标签:

【中文标题】使用 HashTable 对文件组进行排序 - Visual Basic【英文标题】:Sorting Group of Files Using HashTable - Visual Basic 【发布时间】:2012-01-25 15:32:15 【问题描述】:

如何使用Hashtable按值对目录中的文件组进行排序?

我将拥有 500 多个以下格式的文件:

prod_orders_XXX_.dat

XXX = 产品符号,长度可能不同。 = 日期和时间

同一 XXX 的多个文件可能具有不同的时间戳

这里有一些例子:

prod_orders_abc_20122001083000.dat prod_orders_abc_20122001083111.dat prod_orders_xyz_20122001093157.dat prod_orders_xyz_20122001083000.dat prod_orders_abc_20122001163139.dat prod_orders_abc_20122001093137.dat

我之前发布过类似的问题,但这次我需要专门使用 Hashtable。有人可以帮忙吗?

【问题讨论】:

这是 vb.net、vbscript 还是 vb6? File Sorting using Visual Basic的可能重复 【参考方案1】:

这里有四个问题。

    您根本不应该使用 untyped 哈希表。通用 Dictionary 是一个非常 更好的选择。 您没有分享如何确定每个文件名的。哈希表中的项目必须同时具有键和值。大概文件名是值,但我们没有关于密钥的信息。 您没有指定将使用什么标准来确定排序顺序。按时间戳排序?文件名?产品符号?有什么优先权? 哈希表是字典,未按定义排序。没有办法对它们进行排序。时期。故事结局。您可以以排序的方式迭代它们的内容,但不能强制它存储排序的项目,并且尝试这样做会破坏这些集合的良好性能优势。

【讨论】:

实际上我想根据文件中提到的时间戳对文件名进行排序。我认为时间戳可以是关键,字符串部分可以是关键值。最后我们可以将键分配给arraylist,然后对数组进行排序并可以操作文件名的其余部分。但是当两个文件具有不同的产品和相同的时间戳时,我遇到了问题。我已将此场景发布为新问题。 [链接] (***.com/questions/9033092/…) 您再次使用无类型集合。除非您被困在 .Net 1.1 上,否则您没有充分的理由应该永远再次使用 ArrayList。 List 几乎总是首选。 我只是在尝试有效的方法。感谢您对信息不足的回复和道歉。

以上是关于使用 HashTable 对文件组进行排序 - Visual Basic的主要内容,如果未能解决你的问题,请参考以下文章

如何根据另一个列表对元组列表进行排序

Java 如何对 HashMap 或 HashTable 中的项目进行排序?

几个数组的排序方法

JAVA集合04_Map接口概述常用方法排序Hashtable面试题

Collections+Iterator 接口 | Map+HashMap+HashTable+TreeMap |

以数组为值对哈希表进行排序