帮助我理解与Java中的HashMap相关的问题

时间:2010-11-22 18:16:38

标签: java hashmap

我给了一个让我有点困惑的任务。这是问题陈述:


以下程序应读取文件并将其所有标记存储在成员变量中。 您的任务是编写一个方法,该方法返回tokenMap中的项目数,tokenMap中元素的平均长度(作为double值),以及以字符“a”开头的标记数。


这里,tokenMap是HashMap<String, Integer>;

类型的对象

我对HashMap有一些了解,但我想知道HashMap所需的“键值”是单个字符还是整个单词?我应该存储在tokenMap中。

另外,我如何计算平均长度?

5 个答案:

答案 0 :(得分:1)

看起来你必须使用整个单词作为密钥。

令牌的平均长度可以通过将每个令牌的长度相加并除以令牌数来计算。

在Java中,您可以通过tokenMap.size()在HashMap中找到令牌的数量。

您可以编写访问地图每个成员的循环,如下所示:

  for(String t: tokenMap.values()){
     //t is a token
  }

如果你在Java API文档中查找String,你会发现很容易找到String的长度。

答案 1 :(得分:1)

要计算哈希映射中项目的平均长度,您必须迭代它们并计算长度并计算平均值。

至于你关于如何使用钥匙的另一个问题,我们应该如何知道?哈希映射几乎可以使用任何*值作为密钥。


*该值必须是可清除的,不同语言的定义不同。

答案 2 :(得分:1)

仔细阅读这个问题,似乎你必须读取一个文件,提取每个单词并将其用作键值,并将每个键的长度存储为整数:

an example line

导致像这样的HashMap

an : 2
example : 7
line : 4

在您构建地图(由映射到条目的键或问题中的看似元素组成)之后,您需要在其上运行一些统计信息才能找到

  1. 键数(查看HashMap)
  2. 所有键的平均长度(再次,足够简单)
  3. 以“a”开头的数字(只看字符串)
  4. 然后创建一个包含这些值的值对象,并从执行统计信息的方法返回它。

    我知道我已经提供了您需要的更多信息,但其他人可能会从一些额外的帮助中受益。

答案 3 :(得分:0)

伙计们有些困惑。我不是要求解决方案。我只是困惑一件事。 暂时,我将使用String类型作为密钥类型。

我唯一的困惑是,一旦我逐行读取文件,我应该根据单词或基于每个字符拆分它。因此,键值应该是单个字符类型字符串或整个字符串。

如果您可以查看问题陈述,您的建议是什么?这就是我要问的问题。

答案 4 :(得分:0)

  

我应该根据单词或   基于每个角色

要求是制作令牌,因此您应该根据单词进行拆分。每个单词都成为唯一的String键。将值作为每个令牌的计数是有意义的。

如果您正在阅读的文件包含以下三行:

int alpha;
int beta;
float delta;

然后你应该有像

这样的东西
<"int", 2>
<";", 3>
<"alpha", 1>
<"beta", 1>
<"float", 1>
<"delta", 1>

(分号可能会或可能不会被视为代币。) 你的平均长度是(3x2 + 3x1 + 5 + 4 + 5 + 5)/ 6。 以“a”开头的令牌长度为5.0。

在这个论坛的其他地方寻找keySet,你应该好好去。