【问题标题】:How do I count the occurrences of each word in each of sentences stored in arraylists?如何计算存储在数组列表中的每个句子中每个单词的出现次数?
【发布时间】:2016-08-03 18:29:15
【问题描述】:

例如,我有一个 arraylist,其中包含文档的每一行-

list.add("I like to play pool")

list.add("How far can you run")

list.add("Do you like fanta because I like fanta")

我希望能够浏览存储在arrayList 中的每个句子并计算每个句子中每个单词的出现次数,有人可以帮我吗?

编辑 这是我尝试过的,但它只告诉我每个句子的出现。我需要它来计算每个句子的单词。

Set<String> unique = new HashSet<String>(list);
        for (String key : unique) {
            System.out.println(key + ": " + Collections.frequency(list, key));

【问题讨论】:

  • 我们帮助那些自助的人。你还没试过。
  • 您自己尝试过吗?
  • 如果您尝试过任何代码,请在此处发布。
  • 对不起,我添加了我尝试过的内容,希望这对我想要做的事情有意义。我对编程比较陌生。
  • 请阅读一篇有趣的文章How to Ask,并尝试在每个问题中提供minimal reproducible example

标签: java arraylist hashmap word-count


【解决方案1】:
  1. 让我们打电话给你的ArrayList&lt;String&gt; list
  2. 让我们创建一个 String[] 的列表 list2 3、拆分句子到数组。
  3. 计数出现次数

代码:

ArrayList<String> list = new ArrayList<>();
//add sentences here
list.add("My first sentence sentence");
list.add("My second sentence1 sentence1");

ArrayList<String[]> list2 = new ArrayList<>();
for (String s : list) { list2.add(s.split(" "));};
for (String[] s : list2) {
    Map<String, Integer> wordCounts = new HashMap<String, Integer>();

    for (String word : s) {
        Integer count = wordCounts.get(word);
        if (count == null) {
            count = 0;
        }
        wordCounts.put(word, count + 1);
    }
    for (String key : wordCounts.keySet()) {
        System.out.println(key + ": " + wordCounts.get(key).toString());
}

【讨论】:

  • 感谢您的帮助!似乎是正确的,只有当它打印出句子不再有序但它给了我需要的结果时!
  • 随意修改我给你的这段代码,让它以你喜欢的方式打印内容。对您标记为解决方案的答案进行投票是一种很好的方式。
  • 尝试替换 HashMap();使用 LinkedHashMap();把它们整理好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-17
  • 2015-08-18
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多