当前位置: 首页 > 知识库问答 >
问题:

计算每个键的单词在哈希映射中出现的次数

闾丘炫明
2023-03-14

我有一个散列表,句子记录用一个相关的键存储在其中。现在,应该创建一个输出,显示单词(在我的例子中是单词“car”)在这个索引(key)中出现的次数。例如,如果单词“car”在索引(key)中出现5、4次,则5也应该输出4次。

当前输出为: 汽车 : [1, 2, 3, 5]

我想要的输出是:Car : [1,1,2,3,3,5,5,5,5]

Map<Integer, String> carHashMap = new HashMap<>();
ArrayList<Integer> showCarsInMap = new ArrayList<>();

carHashMap.put(1, "this car is very fast car");
carHashMap.put(2, "i have a old car");
carHashMap.put(3, "my first car was an mercedes and my second car was an audi");
carHashMap.put(4, "today is a good day");
carHashMap.put(5, "car car car car");

for (Map.Entry<Integer, String> entrySection : carHashMap.entrySet()) {

    if (entrySection.getValue().contains("car")) {

        showCarsInMap.add(entrySection.getKey());

    }
}

System.out.println("Car : " + showCarsInMap);
    

我想我必须添加一个额外的 if 循环,但我不知道我的程序如何识别哪个“汽车”已经被计算在内,哪个没有。

共有2个答案

杨飞飙
2023-03-14

虽然不理想,但这将起作用:

for (Map.Entry<Integer, String> entrySection : carHashMap.entrySet()) {
 long count = Arrays.stream(entrySection.getValue().split(" ")).filter(t -> t.equals("car"))
                .count();
 while(count>0){
  showCarsInMap.add(entrySection.getKey());
  count--;
 }
}

在这里,我考虑你只有空间(")作为分隔符。

东方飞捷
2023-03-14

我建议您简单地使用正则表达式:

for (Map.Entry<Integer, String> entrySection : carHashMap.entrySet()) {
     Pattern p = Pattern.compile("(?:^|\\W)car(?:$|\\W)"); //This will only capture the exact word, as dicussed in the comments.
     Matcher m = p.matcher(entrySection.getValue());
     while (m.find()) {
           showCarsInMap.add(entrySection.getKey());
     }
}

Regex是这里的。

 类似资料:
  • 问题内容: 如果我有英文文章或英文小说,并且想计算每个单词出现多少次,用Java编写的最快算法是什么? 有人说您可以使用Map ()完成此操作,但我想知道如何知道关键字是什么?每篇文章都有不同的词,您如何知道“关键”词,然后在其数量上加上一个? 问题答案: 这个数字“我是”只是一个字

  • 我想计算一下给定句子中出现了多少个单词。我使用的是C编程语言。它不能计算最后一个字。在给定的字符串中,它计算每个单词发生的次数。如果有像这样的句子,那么程序应该算。但在我的情况下,它不算作。而不是计算,然后: 我的代码:

  • 问题内容: 我有一个重复条目的单词。 我想计算并保存数据结构中每个单词的出现次数。 我该怎么做? 问题答案: 如果您没有大量的字符串,最短的实现方法是使用方法,如下所示: 输出:

  • 问题内容: 计算单词在文件中出现的次数的简便方法是什么? 问题答案: 这还将在单行中计算单词的多次出现:

  • 问题内容: 我是Java字符串的新手,问题是我想计算字符串中特定单词的出现次数。假设我的字符串是: 现在,我也不想拆分它,所以我想搜索一个“雄猫”这个词。它在我的字符串中出现了两次! 我正在尝试的是: 它给了我46个计数器的价值!那么解决方案是什么? 问题答案: 您可以使用以下代码: 演示版 它匹配。 表示在找到匹配项时执行循环内给出的任何操作。并且我将by 的值递增,因此很显然,这给出了一个字符

  • 我可以有一个哈希图在Java看起来像这样吗? 我的问题和这里的类似问题 我是Java新手。所以我想知道的是,如果我需要上面这样的东西,如果它无效,什么是最好的数据结构?