读取一个文件,获取其中出现次数最多的前五个字符以及次数
近期遇到這個題目的時候,大致思路是有就是讀取文件,字符串轉字符數組,排除重復的內容比較次數,結果問題就卡到這里,忘記使用map的鍵值對的特性,以及Collections.sort和Collections.reverse兩個方法。為了方便以后的使用,就把解決方法完成到這里,但是這里讀取文件時空格也是在統計內,且中文沒有做處理。
具體的代碼如下:
public class Qu {
public static void main(String[] args) {
demo(new File("F:\\qu\\a.txt"));
}
public static void demo(File file) {
BufferedReader bfr = null;
try {
bfr = new BufferedReader(new FileReader(file));//讀文件
String strs = null, str = null;
while ((str = bfr.readLine()) != null) {
strs = strs + str;
}
char[] ch = strs.toCharArray();//讀到的字符串,轉為字符數組
TreeMap<Character, Integer> map = new TreeMap<Character, Integer>(
Collections.reverseOrder()); //將字符數組放入Map對象集合中,字符作為鍵,出現的次數作為值
for (int i = 0; i < ch.length; i++) {
char c = ch[i];
if (map.containsKey(c)) {
int count = map.get(c);
map.put(c, count + 1);
} else {
map.put(c, 1);
}
}
/*//遍歷Map集合
Set<Map.Entry<Character, Integer>> set = map.entrySet();
java.util.Iterator<Entry<Character, Integer>> iterator = set
.iterator();
while (iterator.hasNext()) {
Map.Entry<Character, Integer> m = iterator.next();
char k = m.getKey();
int v = m.getValue();
System.out.println(k + "---" + v);
}*/
List<Entry<Character, Integer>> list = new ArrayList<Entry<Character, Integer>>(
map.entrySet());
Collections.sort(list,
new Comparator<Map.Entry<Character, Integer>>() {
// 升序排序
public int compare(Entry<Character, Integer> o1,
Entry<Character, Integer> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
Collections.reverse(list);//反轉,List有升序變為降序
for (Entry<Character, Integer> e : list) {
System.out.println(e.getKey() + ":" + e.getValue());
}
System.out.println("前五條數據");
list = list.subList(0, 5);//截取子List,讀取前五個字符以及出現的次數
for (Entry<Character, Integer> e : list) {
System.out.println(e.getKey() + ":" + e.getValue());
}
} catch (FileNotFoundException e) {
System.out.println("找不到文件!");
e.printStackTrace();
} catch (IOException e) {
System.out.println("文件讀取錯誤!");
e.printStackTrace();
}
}
}
歡迎諸位指導。
轉載于:https://www.cnblogs.com/zhishifx/p/7219125.html
總結
以上是生活随笔為你收集整理的读取一个文件,获取其中出现次数最多的前五个字符以及次数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 五年级下册英语阳光答案2022
- 下一篇: css border 制作三角形