1 回答

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊
你可以用這種方式來(lái)做
// Create the file at path specified in the String str
// ...
HashMap<String, Integer> map = new HashMap<>();
InputStream fis = new FileInputStream(str);
Reader bufferedReader = new BufferedReader(new InputStreamReader(fis));
StreamTokenizer st = new StreamTokenizer(bufferedReader);
st.wordChars('+', '+');
while(st.nextToken() != StreamTokenizer.TT_EOF) {
String s;
switch(st.ttype) {
case StreamTokenizer.TT_NUMBER:
s = String.valueOf(st.nval);
break;
case StreamTokenizer.TT_WORD:
s = st.sval;
break;
default:
s = String.valueOf((char)st.ttype);
}
Integer val = map.get(s);
if(val == null)
val = 1;
else
val++;
map.put(s, val);
}
Set<String> keySet = map.keySet();
Iterator<String> iter = keySet.iterator();
System.out.println("Frequency Of Words :");
int sum = 0;
while(iter.hasNext()) {
String word = iter.next();
int count = map.get(word);
sum += count;
System.out.println(" WORD : " + word + " = " + count);
}
System.out.println("Total Words In Files: " + sum);
請(qǐng)注意,我已使用泛型而不是哈希映射和迭代器的原始版本更新了您的代碼。此外,您用于 StreamTokenizer 的構(gòu)造函數(shù)已被棄用。映射和 set 的使用是無(wú)用的,因?yàn)槟梢允褂?.keySet() 方法循環(huán)訪問(wèn)映射的鍵集?,F(xiàn)在,映射將從字符串(單詞)變?yōu)檎麛?shù)(字?jǐn)?shù))。
無(wú)論如何,關(guān)于你所做的示例,我認(rèn)為簡(jiǎn)單的拆分方法會(huì)更合適。
添加回答
舉報(bào)