對文件中出現的單詞排序次數
阿新 • • 發佈:2018-03-30
從文件中讀單詞並排序package FileRead;
import javax.persistence.criteria.CriteriaBuilder;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.*;
class name{
String name=new String();
int num=0;
}
public class FileRead {
public static void main(String[] args) {
try {
FileInputStream fs=new FileInputStream("E:\\1.txt");
Scanner sc= new Scanner(fs);
int num=0;
HashMap<String,Integer> ts=new HashMap<String, Integer>();
LinkedList<name> list =new LinkedList<name>();
while (sc.hasNext()){
String s=sc.next();
if(ts.containsKey(s)){
Integer i=ts.get(s)+1;
ts.put(s,i);
}
else {
ts.put(s,1);
}
num++;
}
System.out.println("開始排序.....");
int i=0;
int [] nums=new int[num];
Set<String> keys=ts.keySet();
for(String key:keys){
nums[i]=ts.get(key);
name n1=new name();
n1.num=nums[i];
n1.name=key;
list.add(n1);
}
Collections.sort(list, new Comparator<name>() {
@Override
public int compare(name o1, name o2) {
if(o1.num<o2.num){
return 1;
}
else if(o1.num==o2.num){
return 0;
}
return -1;
}
});
for(name n1:list){
System.out.println(n1.num+":"+n1.name);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
整體思想就是先把文件中的數據全部讀出來後,存入一個map中。然後對已經存在的他的出現次數+1,然後接著put進去map中。 最後創建一個鏈表,裏面存儲name對象。然後對list進行排序,根據Collections.sort(list,new Coparator<name>(){
public int compare(name n1,name n2){
if(n1.num<n2.num){
return 1;
}else(n1.num==n2.num){
return 0;
}
return -1;
}
})
對文件中出現的單詞排序次數