我想知道哪种 API 或集合最适合使用扫描仪来搜索文档,计算单词出现的次数并创建一个按字母顺序排列的列表,并为每个单词创建一个子列表,说明它被遵循了多少次换个说法。
这是一个类,所以请指出我正确的方向,因为我对 Java 和包是全新的,但我不想要任何实际的编码技巧,谢谢。
我想你可以用Map<String, Map<String, Integer>>
. 基本上你将拥有一个单词,它与包含所有连续单词及其频率(即它们出现的次数)的地图相关联。所以你有的是:
Map<String, Map<String, Integer>> frequencyTable = new HashMap<String, Map<String, Integer>>();
对于排序,您可以创建一个包含单词及其频率的类。然后,您可以将 aTreeSet
与比较器一起使用(或compareTo
在您的类上实现)来强制排序。然后您的地图将如下所示:
Map<String, TreeSet<Frequency>> frequencyTable = new HashMap<String, TreeSet<Frequency>>();
AssumingFrequency
是保存有关字符串及其出现次数的信息的类。这里唯一的困难是每次你需要更新它的频率时都要查找这个词,因为你必须遍历这个集合。
看看它是否关于排序......
这里有几个选择...
如果您只想以一种方式排序,请使用Collections.sort(T t)和Comparable interface 。
使用Collection.sort(T t, Comparator c)和Comparator 接口以不止一种方式进行排序。
If uniqueness is important, you can also use TreeSet with comparator.