Java實現文字檔案中各個單詞出現的次數

2021-07-23 19:33:41 字數 2629 閱讀 7613

文章借鑑於:

需求:

統計乙個英文文件中各個單詞出現的頻率(由大到小排序),單詞之間用」逗號,句號,空格隔開」,將結果輸出至控制台。

思路:

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 揀...