计算字符串数组中出现的次数,并使用java删除重复的次数



我的代码有问题。我从一个文本文件读到一个字符串数组的单词,删除了句号和逗号。现在我需要检查每个单词的出现次数。我也做到了。但是,我的输出包含文件中的所有单词以及出现的单词。是这样的:2鸟2是1要2北2北2

下面是我的代码:
public static String counter(String[] wordList)
{
    //String[] noRepeatString = null ;
    //int[] countArr = null ;
    for (int i = 0; i < wordList.length; i++) 
    {
         int count = 1;
         for(int j = 0; j < wordList.length; j++)
         {
             if(i != j)  //to avoid comparing itself
             {
                 if (wordList[i].compareTo(wordList[j]) == 0)   
                 {
                     count++;
                     //noRepeatString[i] = wordList[i];
                     //countArr[i] = count;
                 }
             }
         }
         System.out.println (wordList[i] + " " + count);
     }
    return null; 

我需要弄清楚1)得到计数值到一个数组..2)删除重复。正如在评论中看到的,我试图使用一个countArr[]和一个noRepeatString[],希望这样做…但我有一个NullPointerException.

我会首先将数组转换为列表,因为它们比数组更容易操作。

List<String> list = Arrays.asList(wordsList);

然后你应该创建一个该列表的副本(你会在第二秒看到为什么):

ArrayList<String> listTwo = new ArrayList<String>(list);

现在删除第二个列表中的所有重复项:

HashSet hs = new HashSet();
hs.addAll(listTwo);
listTwo.clear();
listTwo.addAll(hs);

然后循环遍历第二个列表并获得该单词在第一个列表中的频率。但首先你应该创建另一个arrayList来存储结果:

ArrayList<String> results = new ArrayList<String>;
for(String word : listTwo){
int count = Collections.frequency(list, word);
String result = word +": " count;
results.add(result);
}

最后可以输出结果列表:

for(String freq : results){
System.out.println(freq);}

我还没有测试这段代码(现在不能这么做)。请询问是否有问题或doesnÄt工作。参考以下问题:

如何从数组列表中删除重复的元素?

在Java中计算String[]中String的出现次数?

如何克隆Java中的泛型列表?

代码中的一些语法问题,但工作正常

ArrayList<String> results = new ArrayList<String>();
for(String word : listTwo){
int count = Collections.frequency(list, word);
String result = word +": "+ count;
results.add(result);
}

相关内容

  • 没有找到相关文章

最新更新