【问题标题】:Compare words in two arrayList<String> java比较两个 arrayList<String> java 中的单词
【发布时间】:2012-11-03 11:26:21
【问题描述】:

我有两个字符串数组列表,我想计算它们中的单词。

每个 ArrayList 都包含关键短语,例如几个单词的字符串,例如:

不过度衰退

地道

奥巴马总统

[...]

我尝试了这两种方法,但我得到了 NullPointerException

 public boolean containsKeyword(String testKeyword, ArrayList<String> list) 
{ return list.contains(testKeyword);
}

public int compareKeywords(Quotidiano quotidiano){
    int sameKeywords=0;
    for(int i=0; i<this.Keywords.size(); i++){
            if(this.containsKeyword(this.getKeyword(i), quotidiano.Keywords))
             sameKeywords++;
          }

    return sameKeywords;
}

非常感谢您的回答!


[编辑]

它使用交叉点工作,谢谢! 但是如果比较单个单词会更好。

例如,如果我有关键词

“意大利的传播”,

“低于 300”,

我认为交集是空的,而不是我想返回“spread”。 我该怎么做?

【问题讨论】:

  • 你能用代码发布完整的堆栈跟踪吗
  • 添加错误/异常处理以避免运行时错误

标签: java string arraylist word string-comparison


【解决方案1】:

使用Apache ListUtils Intersection

public static java.util.List intersection(java.util.List list1,
                                      java.util.List list2)

PS:这会抛出 java.lang.NullPointerException - 如果任一列表为空

【讨论】:

  • 我猜 OP 想要检查“关键词”中的所有单个单词。
  • 它使用交叉点工作,谢谢!但是如果比较单个单词会更好。例如,如果我有关键词“意大利的传播”,“传播低于 300”,我认为交集是空的,而不是我想返回“传播”。我该怎么做?
  • 为此,您需要split 各个关键词。所以“意大利的价差”-> {“价差”,“of”,“意大利”} 和“价差低于 300”--> {“价差”,“低于”,“300”}。然后,intersection 将根据需要产生“传播”。
【解决方案2】:

当您从未知来源获得输入时,您应该检查 null。你不应该认为输入是好的。

public boolean containsKeyword(String testKeyword, ArrayList<String> list) 
{ 
    return (list != null) ? list.contains(testKeyword) : false;
}

public int compareKeywords(Quotidiano quotidiano){
    if(quotidiano == null || this.Keywords == null) return 0;
    int sameKeywords=0;
     for(int i=0; i<this.Keywords.size(); i++){
        if(this.containsKeyword(this.getKeyword(i), quotidiano.Keywords))
         sameKeywords++;
    }

    return sameKeywords;
}

检查 this.Keyword 是可选的,因为我假设这是您的代码,并且您知道它应该始终与 null 不同。

【讨论】:

    【解决方案3】:

    NullPointerException 在您使用任何对象的成员并且该对象尚未初始化时发生。确保两个列表都已初始化且不为空。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-30
      • 2013-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多