0

嗨,我在做学校作业,我需要将此 JAVA 代码转换为 C#

private Map<ItemID, ProductDescription> descriptions = new HashMap()<ItemID, ProductDescription>;

是否可以直接转换?

我已经决定把 ItemID 变成一个 int,而 ProductDescription 是一个类。

4

7 回答 7

1

你可以用 aDictionary<int, ProductDescription>代替。

Dictionary<TKey, TValue> Class

表示键和值的集合。密钥必须是唯一的。

于 2012-09-28T08:19:32.193 回答
1
private Dictionary<ItemID, ProductDescription> descriptions = new Dictionary<ItemID, ProductDescription>();

hasmap 确实允许一个空键条目。在(罕见?)情况下,您将需要这个,我只需创建一个特殊的 ItemID 并将其用于 null 键。

你当然可以制作一个支持空键的字典后代,但恕我直言,这太过分了;-)

于 2012-09-28T08:19:54.177 回答
1

是的,当然可以。请查看以下示例:

IDictionary<int, string> h = new Dictionary<int, string>();
            h.Add(1, "a");
            h.Add(2, "b");
            h.Add(3, "c");

SortedList<int, string> s = new SortedList<int, string>();
            s.Add(1, "a");
            s.Add(2, "b");

我想这就是你要找的。

于 2012-09-28T08:24:09.713 回答
0

是的,只需替换HashMapDictionary. 您可能希望将变量键入为 an IDictionary(本着与 Java 代码相同的精神),但这并不是绝对必要的。

于 2012-09-28T08:19:10.513 回答
0

是的,您可以使用 Dictionary 而不是 HashMap 进行转换。当然,了解每个代码段并进行转换会更有效。不建议尝试逐行转换,因为您可能会错过可用于解决问题的更好方法。

于 2012-09-28T08:19:49.433 回答
0

这是一场很好的比赛,但是,

private IDictionary<ItemID, ProductDescription> descriptions
    = new Dictionary<ItemID, ProductDescription>();

笔记

HashMap将接受null键值,而 asDictionary则不会。

如果您真的想支持null键值,我希望看到您在尝试完美的 .NetHashMap实现之前进行推理。

于 2012-09-28T08:20:51.263 回答
0

有很多选择。

有一个

C#中的哈希表

KeyValuePair所以可以List<KeyValuePair<T,U>>

字典//首选

于 2012-09-28T08:21:03.143 回答