package Others;import java.io.*;import java.util.*;/* display the most frequent K words in the file and the times it appearin the file – shown in order (ignore case and periods) */public class TopKWords {static class CountWords {private String fileName;public CountWords(String fileName) {this.fileName = fileName;}public Map<String, Integer> getDictionary() {Map<String, Integer> dictionary = new HashMap<>();FileInputStream fis = null;try {fis = new FileInputStream(fileName); // open the fileint in = 0;String s = ""; // init a empty wordin = fis.read(); // read one characterwhile (-1 != in) {if (Character.isLetter((char) in)) {s += (char) in; //if get a letter, append to s} else {// this branch means an entire word has just been readif (s.length() > 0) {// see whether word exists or notif (dictionary.containsKey(s)) {// if exist, count++dictionary.put(s, dictionary.get(s) + 1);} else {// if not exist, initiate count of this word with 1dictionary.put(s, 1);}}s = ""; // reInit a empty word}in = fis.read();}return dictionary;} catch (IOException e) {e.printStackTrace();} finally {try {// you always have to close the I/O streamsif (fis != null)fis.close();} catch (IOException e) {e.printStackTrace();}}return null;}}public static void main(String[] args) {// you can replace the filePath with yoursCountWords cw = new CountWords("/Users/lisanaaa/Desktop/words.txt");Map<String, Integer> dictionary = cw.getDictionary(); // get the words dictionary: {word: frequency}// we change the map to list for convenient sortList<Map.Entry<String, Integer>> list = new ArrayList<>(dictionary.entrySet());// sort by lambda valueComparatorlist.sort(Comparator.comparing(m -> m.getValue()));Scanner input = new Scanner(System.in);int k = input.nextInt();while (k > list.size()) {System.out.println("Retype a number, your number is too large");input = new Scanner(System.in);k = input.nextInt();}for (int i = 0; i < k; i++) {System.out.println(list.get(list.size() - i - 1));}input.close();}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。