【发布时间】:2021-10-30 11:16:00
【问题描述】:
我正在将一个项目从 c# 迁移到 java,但 TryGetValue() 方法有问题!
这里是c#代码:
private static void _AddBadQualityChar (Dictionary<string,List<string>> badQualityChars, string charString, string badQualityChar)
{
List<string> _badQualityChars;
if (!badQualityChars.TryGetValue (charString, out _badQualityChars))
{
_badQualityChars = new List<string> ();
badQualityChars [charString] = _badQualityChars;
}
_badQualityChars.Add (badQualityChar);
}
我不知道 java map 中 TryGetValue() 方法的等价物是什么,我只能找到不返回 Boolean 的 get() 方法!如何用 Java 编写这个函数?
【问题讨论】:
-
你看过地图类文档吗?我用 2 分钟的谷歌搜索找到了这个:docs.oracle.com/javase/8/docs/api/java/util/…
-
@SelmanGenç 这如何让您区分不存在的键与存在的键值是您作为默认值提供的值?
-
您可以将
get与Map区别开来,但您无法区分包含映射到null的键的Map和根本没有映射的Map。由于 Java 没有“输出参数”,因此没有直接等价于上述内容。你能做的最好的就是containsKey,然后是get——很遗憾,这是Map中的两次查找。因此,您需要回答的问题是,在您的用例中,您是否关心映射不存在和映射到null之间的区别。 -
如果您似乎没有先进行研究,这里的人们倾向于对问题投反对票。对于这样的问题,请注意您阅读过哪些文档或其他 SO 帖子,以及为什么您在那里找到的答案与您的问题不相关。
-
@SelmanGenç 假设 null 或空字符串在映射中不是有效值。在某些情况下它是一个有效值。
标签: java dictionary hashmap