【问题标题】:Java: Finding how many words appear in BOTH data sources?Java:找出两个数据源中出现了多少个单词?
【发布时间】:2010-06-22 20:32:45
【问题描述】:

我想知道是否有一种简单的方法可以计算出现在小段落 (#1) 和小段落 (#2) 中的单词数。

一般来说,我会逐字确定这些段落中有多少重叠。因此,如果 (#1) 包含单词“happy”,并且 (#2) 包含单词“happy”,则相当于 +1 值。

我知道我可以为 (#1) 中应用于 (#2) 的每个单词使用 String.contains()。但我想知道是否有更有效的方法可以使用

【问题讨论】:

    标签: java string compare


    【解决方案1】:

    您可以创建两个集合 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());
    

    不要忘记从两个集合中删除空词。

    【讨论】:

    • 我只是在输入一个复杂的算法,但这更干净,哈哈。 +1 比我更了解 Java API。
    • 我一直用这种方法得到 0。我用 3 个单词的哈希集和 3 个单词的哈希集对其进行测试...每次结果为零...,集合是无序的,两个单词之间是通用的
    • 知道了!我正在重新使用哈希图。因此,每当我重新声明变量时,我都必须创建一个新的 hashmap 而不仅仅是设置它。谢谢你的回答!
    猜你喜欢
    • 2013-02-13
    • 2020-05-13
    • 2011-01-15
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-15
    相关资源
    最近更新 更多