如何在java中使用2D数组从一堆eml文件中添加唯一的字符串和该字符串的计数



基本上,我正在从本地文件夹中读取.eml文件,我想测量所有文档中每个字符串的频率。我的意思是在我所有的文件中发现一个单词的次数。我想使用一个2d数组来存储所有唯一的单词及其在所有文档中的出现次数。我的想法是读取一个文档,找出唯一的单词,然后将该单词插入数组,然后读取第二个文档,然后在数组中搜索唯一性,如果找到的单词增加出现次数,如果在数组列表中找不到单词,则将该单词添加到数组中,并为该单词增加计数1,然后在读取后获得第三个文件。我正在利用这里的帮助。但它不是在检查数组中的唯一性。。。它只是将文件中的唯一单词添加到数组中。例如,在第一个文件中,"word"出现了3次,因此它显示在数组|word |3|中,然后在第二个文件中"word"已经出现了4次,因此显示|word |4|。但我正试着把它写成|word|7|。。。

我正在接受帮助的代码

public static String[][] dupWords (String str) {
    String [] stringArray = str.split(" ");
    int countWords = 0;
    int index = 0;
    HashMap<String, String> indexMap = new HashMap<String, String>();
    HashMap<String, Integer> countMap = new HashMap<String, Integer>();
    //int indexx = 0;
    for (int i = 0; i < stringArray.length; i++) {
       String s = stringArray[i];
       if (!indexMap .containsKey(s)) {
         indexMap.put(s, s);
         countMap.put(s, 1);
       }
       else {
         int cnt = countMap.get(s);
         countMap.put(s, cnt+1);
       }
       index += s.length() + 1;
    }
    String [][] retArr = new String[stringArray.length][2];
    for (int i = 0; i < stringArray.length; i++) {
       String s = stringArray[i];
       retArr[i][0] = indexMap.get(s);
       retArr[i][1] = Integer.toString(countMap.get(s));
       System.out.println(retArr[i][0]);
       System.out.println(retArr[i][1]);
    }
    return retArr;
  }

我建议您将数据存储在HashMap中,其中单词是关键字,值将是出现次数

你们可以检查地图上是否有钥匙。如果没有插入,如果是,则增加其值

Foo value = map.get(key);
if (value != null) {
   //increment my value
} else {
   //insert me
}

相关内容

  • 没有找到相关文章

最新更新