我有两个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以下传播”,
我认为交集是空的,而我想要“传播”返回。 我该怎么办?
答案 0 :(得分:1)
使用Apache ListUtils Intersection
public static java.util.List intersection(java.util.List list1,
java.util.List list2)
PS:抛出java.lang.NullPointerException
- 如果任一列表为空
答案 1 :(得分:1)
每当您从未知来源获取输入时,都应该检查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。
答案 2 :(得分:0)
NullPointerException
。确保两个列表都已初始化且不为空。