我想知道哪种 API 或集合最适合用于使用扫描仪搜索文档,计算单词出现的次数并创建一个按字母顺序排列的列表,并为每个单词创建一个包含多少次的子列表它后面跟着另一个词。
这是一个类(class),所以请给我指出正确的方向,因为我对 Java 和包是全新的,但我不需要任何实际的编码技巧,谢谢。
最佳答案
我想你可以用 Map<String, Map<String, Integer>>
做类似的事情.本质上,您将拥有一个单词,它与包含所有连续单词及其频率(即它们出现的次数)的 map 相关联。所以你会得到的是:
Map<String, Map<String, Integer>> frequencyTable = new HashMap<String, Map<String, Integer>>();
为了排序,您可以创建一个包含单词及其频率的类。然后你可以使用 TreeSet
使用比较器(或在您的类(class)上实现 compareTo
)来强制执行排序。那么您的 map 将如下所示:
Map<String, TreeSet<Frequency>> frequencyTable = new HashMap<String, TreeSet<Frequency>>();
假设Frequency
是保存有关字符串及其出现次数的信息的类。这里唯一的困难是每次需要更新它的频率时都要查找单词,因为您将不得不遍历集合。
关于Java 排序集合/api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11367478/