从字符串数组中删除重复的单词并写入输出文件

时间:2013-04-27 02:07:07

标签: java

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

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

4 个答案:

答案 0 :(得分:0)

以下是我将要使用的逻辑:

  1. 创建一个包含字符串值和计数的类。让它成为StringVal。 StringVal中的Equals和hashcode方法不会使用count,只会使用String值。
  2. 使用HashMap,如:Map<StringVal,int> strCount = new HashMap<StringVal,int>();
  3. 现在继续阅读并在地图中存储字符串。如果地图中不存在则添加,如果存在,则添加计数。 [这删除了重复]
  4. 现在编写一个比较器,可以根据计数对StringVal进行排序。
  5. 通过这种逻辑,你可以实现你想要的人。

答案 1 :(得分:0)

将每个单词用作散列映射中的键,每次出现一个新键或增加整数。一旦完成循环通过每个....中的键....

答案 2 :(得分:0)

考虑到当你的内部'j'循环结束时,你的外部'i'循环可以继续检索下一次出现的相同的字。这就是为什么你会多次看到相同的单词输出,每次计数减少一次。

当'j'循环结束时,您可以通过将'i'设置为'j'来更近。或者,考虑消除'j'循环,并将令牌[i]与令牌[i-1]进行比较。

之后,您仍然不会按字频对输出进行排序。但是你不希望我们做你的作业。

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

答案 3 :(得分:-1)

首先过滤它们然后对它们进行排序。比如使用arraylist存储字符串并使用循环来检查字符串是否已经在arraylist中,并且在过滤之后你现在可以对它们进行排序。