我一直在閱讀地圖,並瞭解樹圖和散列排序地圖的一些差異。我試圖在輸出地圖時對其進行排序。排序映射不輸出排序。我瞭解地圖嗎?
我需要什麼,能夠做的是:
- 以一個文本文件,並在內容閱讀。
- 將其分成單獨的單詞。使用單詞作爲關鍵字,並將該值作爲txt文件中發生的次數
key
。 - 如果這個單詞在一個句子的末尾,我將它作爲一個單獨的密鑰。例如,
my
和my.
是兩個獨立的鍵。
我的問題是,無論我將它聲明爲樹,散列還是有序映射,我都無法以有序的方式輸出/遍歷。我希望它先輸出最高的值,但我甚至無法以任何順序使用密鑰輸出。
public static Map<String, Integer> createDictionary(String _filename)
{
TreeMap<String, Integer> dictionary = new TreeMap<String, Integer>(); // Changed Hash to _______
try {
FileReader myFileReader=new FileReader(_filename); // File reader stream open
BufferedReader myBuffReader=new BufferedReader(myFileReader);
String str = "\0";
while (str != null) { // While there are still strings in the file
str = myBuffReader.readLine(); // We read a line into the str variable
if (str != null) { // Make sure its not the last line/EOF
// System.out.println(str); // Used for testing.
StringTokenizer myTokenStr=new StringTokenizer(str," \t"); // Create a StringToken obj from the string
while (myTokenStr.hasMoreTokens()) {
String tokStr = myTokenStr.nextToken(); // Each token is put into an individual string
// System.out.println(tokStr);
if (dictionary.containsKey(tokStr)) {
int value = dictionary.get(tokStr); // Add one to the integer value
// dictionary.remove(tokStr); // Was doing this way but just using put method works
// dictionary.put(tokStr, value + 1);
dictionary.put(tokStr, value + 1);
}
else {
dictionary.put(tokStr, 1); // Add the string as the key with an int value of one for the value
}
}
}
}
myBuffReader.close(); // Close stream
myFileReader.close(); // Close stream
}
catch (FileNotFoundException e) {
System.out.println("File Not Found");
}
catch (IOException e) { }
// System.out.println(dictionary.entrySet());
return dictionary;
}
那麼......它輸出什麼? – StilesCrisis 2012-02-14 04:36:42
首先,你確定要在'「\ t」'上標記嗎?當你說「闖入單詞」時,默認的標記字符串在一般情況下似乎是更好的匹配,即'StringTokenizer(str)'你不像符號化的方式匹配換行符。你究竟如何迭代? (另外,如果你想排序,忘記HashMap,TreeMap是唯一的方法) – Irfy 2012-02-14 04:40:06
Stiles ...它輸出正確的單詞與正確的單詞計數,但下面的單詞是按字母順序或值/單詞計數在訂購。它的隨機像一個哈希映射。 Irfy .... tokinize on「\ t」應該標記爲空格和製表符。唯一的另一個就是行尾,這已經被照顧了。我可能是錯的,但它與C++ tokinize類似,它已與我發送它的測試用例一起工作。 – 2012-02-14 05:05:12