文章借鑑於:
需求:
統計乙個英文文件中各個單詞出現的頻率(由大到小排序),單詞之間用」逗號,句號,空格隔開」,將結果輸出至控制台。
思路:
1、利用輸入流實現對檔案內容的輸入;
2、將檔案內容存入stringbuffer中;
3、利用string的split()方法將字串分隔,並將其存入陣列中;
4、遍歷陣列將其存入map中。其中,key中存放單詞,value中存放key中單詞出現的次數。
5、利用collections的sort()方法對treemap的value進行排序(很多時候treemap是根據key的值來進行排序的,但是有時我們需要根據treemap的value來進行排序。對value排序我們就需要借助於collections的sort(listlist, comparator<? super t> c)方法,該方法根據指定比較器產生的順序對指定列表進行排序。treemap預設是公升序的,如果我們需要改變排序方式,則需要使用比較器:comparator。comparator可以對集合物件或者陣列進行排序的比較器介面,實現該介面的public compare(t o1,t o2)方法即可實現排序,該方法主要是根據第乙個引數o1,小於、等於或者大於o2分別返回負整數、0或者正整數。但是有乙個前提條件,那就是所有的元素都必須能夠根據所提供的比較器來進行比較。)
public
class
sortwords1
//不區分大小寫
string str = sb.tostring().tolowercase();
//分隔字串並存入陣列 (以,。空格分割)
string elements = str.split("[,.\\s]");
int count = 0;
mapmytreemap = new treemap();
//遍歷陣列將其存入map中
for(int i = 0; i < elements.length; i++)
else
}
/*** 直接遍歷map輸出
*/system.out.println("直接遍歷map輸出(無序):");
for(map.entryentry:mytreemap.entryset())
/*** 對頻率從大到小排序,然後輸出
*/system.out.println("對頻率從大到小排序,然後輸出:");
//將map.entryset()轉換成list
list> list = new arraylist>(mytreemap.entryset());
//通過比較器實現排序
collections.sort(list, new comparator>()
});
for(map.entrymap : list)
system.out.println("耗時:" + (system.currenttimemillis() - t1) + "ms");
} catch (filenotfoundexception e) catch (ioexception e) finally catch (ioexception e) }}
}
public
class sortwords2
//不區分大小寫
string str = sb.tostring().tolowercase();
//分隔字串並存入陣列 (以,。空格分割)
string elements = str.split("[,.\\s]");
int count = 0;
mapmytreemap = new treemap();
//遍歷陣列將其存入map中
for(int i = 0; i < elements.length; i++)
else
}
system.out.println("單詞統計的結果請見當前目錄result.txt檔案");
//將map.entryset()轉換成list
list> list = new arraylist>(mytreemap.entryset());
//通過比較器實現排序
collections.sort(list, new comparator>()
});
int num = 1;
//將結果寫入檔案
for(map.entrymap : list)
else
break;
} bw.write("耗時:" + (system.currenttimemillis() - t1) + "ms");
system.out.println("耗時:" + (system.currenttimemillis() - t1) + "ms");
} catch (filenotfoundexception e) catch (ioexception e) finally catch (ioexception e) }}
}
文字檔案操作 單詞排序
在當前目錄有檔案 case1.in 檔案裡存放有多個 總個數不超過10000個 英文單詞 每個英文單詞不會超過10個字文字元 每行乙個,單詞未排序。現要求,將檔案中的所有單詞按字典順序排序,然後將排序好的單詞寫入新建的檔案answer.txt中 注 檔案存放於當前目錄 請完成程式,實現該功能,注意,...
Java讀取超大文字檔案
近日由於相關業務,需要讀取乙個將近1g的檔案,然後將符合條件的資料insert進資料庫。而執行完程式之後,最後寫入資料庫的資料是將近100w條,在linux系統下執行時間將近3個小時,操作量還是上了乙個相當的規模。由於之前沒有進行過超大檔案的讀寫,一開始以為需要使用分布式系統等複雜的操作才能進行。後...
C 實現文字檔案合併
c 實現文字檔案合併 讀取n個文字檔案,把檔案內容合併到乙個文字檔案中。主要用了filestream的readbyte和writebyte方法 class filecombine catch system.exception ex finally 呼叫方法如下 class testcombine 揀...