【发布时间】:2011-06-05 00:19:05
【问题描述】:
当我将一些项目添加到 Java Hashtable 中时,它们的顺序与 .NET Hashtable 的顺序不同。有什么方法可以确保 .NET Hashtable 与 Java Hashtable 具有相同的顺序?
我正在尝试将一些 Java 代码移植到 C#。 Java 代码使用Hashtable 来跟踪一些数据。当我检查 order 时,当我遍历 Java Hashtable 或 .NET Hashtable(通过 Enumerator)时,数据被检索到,每个都始终具有相同的数据, 以相同的顺序...但是每个基于代码的 有不同的顺序。
有什么办法可以让 .NET Hashtable 数据与 Java Hashtable 的顺序相同?
我知道Hashtable 不处理订单 - 所以我觉得没有什么可以做的。我也无法将 Java 代码中的数据类型从 .. say .. a Hashtable 更改为其他内容。
这里有一些相同的数据来说明我的情况。
数据,为任一代码库添加顺序:-
- 号码 |一些数据
- 页码 |一些数据
- x |一些数据
- 顶部 |一些数据
Java 代码:
private Hashtable identifiers = new Hashtable();
...
identifiers.put(symbol, identifier);
通过枚举器迭代的 Java 输出:
.NET 代码:
private Hashtable Identifiers = new Hashtable();
...
Identifiers.Add(symbol, identifier);
.NET 通过枚举器迭代输出。
有什么想法或建议吗?
【问题讨论】:
-
哈希表在它们的项目上没有定义顺序,Java 和 .NET 都没有保证。
-
您在移植过程中是否确定顺序很重要?
-
@Nikita Rybak - 不幸的是,这很关键。 Java 代码遍历每个键并用单个字符替换数据值。例如。第一个数据值“x”变为“a”。第二个数据值“pagenum”变为“b”。在 c# 代码中,“pagenum”是“c”,“x”是“d”。 :( 代码仍然有效,只是结果现在不相同了。
标签: java .net iterator hashtable enumeration