繁体   English   中英

比较两个arrayList中的单词 <String> java的

[英]Compare words in two arrayList<String> java

我有两个String的ArrayList,我想计算两个中的单词。

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

un'altra recessione

strada lunga

总统巴拉克奥巴马

[...]

我试过这两个方法,但我得到一个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以下传播”,

我认为交集是空的,而不是我希望“传播”返回。 我该怎么做?

使用Apache ListUtils Intersection

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

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

无论何时从未知来源获取输入,都应检查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。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM