计算每个句子中的单词数量

时间:2015-06-04 01:43:44

标签: java arraylist hashmap hashtable bufferedreader

我有一个这种格式的文本文件:

   Word   index
   Adam     0
   likes    1
   to       2
   play     3
   soccer   4
   You      0
   have     1
   to       2
   study    3
   for      4
   the      5
   exam     6

我想计算每个句子中的单词数量。我创建了3个数组列表,一个用于单词索引,另一个用于计算句子中的标记,另一个用于保存每个句子的标记数。我将上面的文件读入数组列表并执行以下操作:

    (int f=0; f<OnlyWordIndex.size() ;f++){
       if (!OnlyWordIndex.get(f).equals("0"))
        {
         NumberCounter1.add("1");
        }

        if (OnlyWordIndex.get(f).equals("0"))
        {
         NumberCounter1.add("1");
         SentenceLegnth=NumberCounter1.size();
         NumberCounter2.add(SentenceLegnth);
         NumberCounter1.clear();

        }
     }

但我认为要么我缺少某些东西,要么使问题复杂化。因此,任何帮助改善这一点将不胜感激。谢谢,

1 个答案:

答案 0 :(得分:0)

在这种情况下使用地图而不是ArrayList似乎合乎逻辑,即使您可以以两种方式实现。

使用地图:

Map<String,Integer> wordMap = putWordsInMap(File file);

public void countWords([whatever-input-you-want]) {
    String sentence = [some-sentence];
    String[] senSplit = sentence.split(" ");
    for(String s : senSplit) {
        if(wordMap.contains(s)) {
            wordMap.put(s,new Integer(wordMap.get(s).intValue + 1));
        }
    }
}

如果您还想跟踪每个句子中找到的单词数量,您可以将其添加到现有代码中:

List<String> sentenceWords = new ArrayList<String>();
for(String s : senSplit) {    
if(wordMap.contains(s)) {    
    wordMap.put(s,new Integer(wordMap.get(s).intValue + 1));    
    sentenceWordCount += 1;
}  
sentenceWords.add(sentenceWordCount);

您还可以将句子单词计数实现为地图......它取决于解决方案背后的背景。