我有一个单词列表,让我们说
我在文件或字符串中有一个非常大的文本
我需要查找列表中的每个单词,在该大字符串中找到该单词的出现次数?
我有点期待结果
以上只是4个元素,但是在我的情况下它可能会达到几千个,我可以遍历每个元素并找到针对该字符串的no.of计数,但不确定这是考虑性能的最佳解决方案吗?你们能否为我找到最好的解决方法?
答案 0 :(得分:1)
鉴于需要匹配包含空格的字符串,我倾向于循环遍历目标字符串列表,在该字符串的文本中执行适当的转义正则表达式搜索,并记录正则表达式匹配的数量。
答案 1 :(得分:0)
您可以通过用空格分隔主strings
并使用Java 8的Stream API来计算string
的数量,例如:
public static void main(String[] args) throws FileNotFoundException {
String s = "a b c d e f d g e a c v d a w s";
Map<String, Long> wordCount = Arrays.stream(s.split("\\s"))
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
System.out.println(wordCount);
}
答案 2 :(得分:0)
如果您不想使用Streams,可以这样做:
String s = "a b c d e f d g e a c v d a w s";
Map<String, Long> wordCount = new HashMap<>();
String[] words = s.split("\\s");
for (String word : words) {
Long count = wordCount.get(word);
if (count == null) {
count = 0L;
}
count = count + 1L;
wordCount.put(word, count);
}
System.out.println(wordCount);