0

我有一个任务要求我从 input.txt 文件中取出单词并按频率对它们进行排序,然后将它们写入 output.txt 文件。

我遇到的问题是,一旦我从输入文件中找到每个单词的频率,我就不知道如何删除重复项以及如何防止它们被写入输出文件。

4

4 回答 4

0

这是我将使用的逻辑:

  1. 创建一个包含字符串值和计数的类。让我们称它为 StringVal。StringVal 中的 Equals 和 hashcode 方法不会使用 count,只会使用 String 值。
  2. 像这样使用 HashMap:Map<StringVal,int> strCount = new HashMap<StringVal,int>();
  3. 现在继续在地图中读取和存储字符串。如果地图中不存在则添加,如果存在则增加计数。[这消除了重复]
  4. 现在编写一个比较器,它可以根据计数对 StringVal 进行排序。

有了这个逻辑,您就可以实现您正在寻找的东西。

于 2013-04-27T02:20:18.953 回答
0

将每个单词用作哈希图中的键,每次出现一个新键或递增整数。完成后,循环遍历 for each 中的键......

于 2013-04-27T02:24:44.827 回答
0

考虑一下当你的内部“j”循环结束时,你的外部“i”循环可能会继续遍历下一次出现的相同单词。这就是为什么您会多次看到相同的单词输出,每次计数减少一个。

当'j'循环结束时,你可以通过设置'i'相对于'j'来更接近。或者,考虑消除“j”循环,并将标记[i] 与标记[i-1] 进行比较。

之后,您仍然不会按词频对输出进行排序。但你不希望我们做你的功课。

我建议使用像 Eclipse 这样的 Java IDE,并学习如何使用 Java 调试器。

于 2013-04-27T02:26:49.263 回答
-1

首先过滤它们,然后对它们进行排序。就像使用数组列表来存储字符串并使用循环来检查字符串是否已经在数组列表中,过滤后您现在可以对它们进行排序。

于 2013-04-27T02:15:07.723 回答