【发布时间】:2010-06-22 20:32:45
【问题描述】:
我想知道是否有一种简单的方法可以计算出现在小段落 (#1) 和小段落 (#2) 中的单词数。
一般来说,我会逐字确定这些段落中有多少重叠。因此,如果 (#1) 包含单词“happy”,并且 (#2) 包含单词“happy”,则相当于 +1 值。
我知道我可以为 (#1) 中应用于 (#2) 的每个单词使用 String.contains()。但我想知道是否有更有效的方法可以使用
【问题讨论】:
我想知道是否有一种简单的方法可以计算出现在小段落 (#1) 和小段落 (#2) 中的单词数。
一般来说,我会逐字确定这些段落中有多少重叠。因此,如果 (#1) 包含单词“happy”,并且 (#2) 包含单词“happy”,则相当于 +1 值。
我知道我可以为 (#1) 中应用于 (#2) 的每个单词使用 String.contains()。但我想知道是否有更有效的方法可以使用
【问题讨论】:
您可以创建两个集合 s1 和 s2,分别包含第一段和第二段中的所有单词,并将它们相交:s1.retainAll(s2)。听起来很简单。
更新
为我工作
Set<String> s1 = new HashSet<String>(Arrays.asList("abc xyz 123".split("\\s")));
Set<String> s2 = new HashSet<String>(Arrays.asList("xyz 000 111".split("\\s")));
s1.retainAll(s2);
System.out.println(s1.size());
不要忘记从两个集合中删除空词。
【讨论】: