基本上,我正在从本地文件夹中读取.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
}