Java - 如何从句子的ArrayList中获取每个单词

标签 java arrays arraylist hashmap string-comparison

示例,如何检查列表 containsThese 中的单词是否存在出现在列表中sentences有多少?

List<String> sentences = Arrays.asList("wish you a good day", "warm day", "sounds good");

List<String> containsThese = Arrays.asList("cool", "day", "good");

我在做什么:


for (int i = 0; i < sentences.size(); i++){

   String words = sentences.get(i);

   // so here I have each sentence separately
   // but how to iterate through it and add each word to another ArrayList or something?
   // so later can compare to it to 'containsThese' ?

}

欢迎大家提出建议,谢谢。

最佳答案

使用下面的函数,您可以在每个空格处拆分句子并将单词添加到新列表中。

private List<String> sentenceToList(String sentence) {
  return new ArrayList<>(Arrays.asList(sentence.split("\\s+")));
}

通过此函数,您将获得一个 Map,其中以句子为键,并包含一个包含来自 containsThese 的所有单词的列表。

private Map<String, List<String>> checkSentences() {
    Map<String, List<String>> containsMap = new HashMap<>();
    sentences.forEach(sentence -> {
        containsMap.put(sentence, sentenceToList(sentence).stream().distinct().filter(word -> containsThese.contains(word)).collect(Collectors.toList()));
    });
    return containsMap;
}

返回-> {温暖的一天=[day],听起来不错=[good],祝你有美好的一天=[good, day]}

关于Java - 如何从句子的ArrayList中获取每个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59708779/

相关文章:

java - 当使用 SXSSFWorkbook 创建 Excel 并使用 XSSFWorkbook 修改 Excel 时,字符串单元格数据在 Excel 编辑器中不可见

java - 使用 Spring,如何将子 bean 注入(inject)父 bean 中?

java - 从 ArrayList 到数组的对象

java - 如何在 servlet-jsp/jsp-servlet 中过滤 arraylist 结果?

java - 如何使用jdbc连接将excel表中的数据存储到mysql数据库中

javascript - 在 javascript 中,从迭代器创建数组

arrays - unsafe.Pointer to []byte in Go

java - 从 Android 月份重新排列 ArrayList

java - 如何从 Java 中的文本文件打印多行?

java - 在 Java 控制台中预填充输入