2010-06-22 34 views
4

我想知道是否有一個簡單的方法來計算出現在小段落(#1)和小段落(#2)中的單詞數量。Java:查找在這兩個數據源中出現多少個單詞?

一般來說,我決定在這些段落中逐字段地重疊多少。因此,如果(#1)包含單詞「happy」,並且(#2)包含單詞「happy」,那麼它就像+1值。

我知道我可以對應用於(#2)的(#1)中的每個單詞使用String.contains()。但我想知道是否有更有效率的東西可以使用

回答

7

您可以創建兩個集合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()); 

不要忘了從兩組刪除空字。

+0

我只是輸入一個複雜的算法,但這是更清潔哈哈。瞭解Java API的+1比我更好。 – Mike 2010-06-22 20:39:21

+0

聽起來不錯,會嘗試讓你知道它是否工作! – rockit 2010-06-22 20:44:22

+0

我一直用這種方法得到0。我使用3個字的哈希集測試它與3個字的哈希集...每次結果爲零...,集是無序的,一個字是在兩個公用的 – rockit 2010-06-22 21:37:33

相關問題