1

我想知道哪种 API 或集合最适合使用扫描仪来搜索文档,计算单词出现的次数并创建一个按字母顺序排列的列表,并为每个单词创建一个子列表,说明它被遵循了多少次换个说法。

这是一个类,所以请指出我正确的方向,因为我对 Java 和包是全新的,但我不想要任何实际的编码技巧,谢谢。

4

2 回答 2

3

我想你可以用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是保存有关字符串及其出现次数的信息的类。这里唯一的困难是每次你需要更新它的频率时都要查找这个词,因为你必须遍历这个集合。

于 2012-07-06T18:11:00.853 回答
1

看看它是否关于排序......

这里有几个选择...

  1. 如果您只想以一种方式排序,请使用Collections.sort(T t)Comparable interface 。

  2. 使用Collection.sort(T t, Comparator c)Comparator 接口以不止一种方式进行排序。

  3. If uniqueness is important, you can also use TreeSet with comparator.

于 2012-07-06T18:12:37.943 回答