[英]How can I check if an ArrayList<String> contains any elements from an array of Strings?
在Android中,我想执行一条if语句来检查ArrayList是否包含String数组中的任何元素 ? 例如
检查唱歌组中的任何元素是否也包含在Winners中[]
String Winners[] = {"Jennifer", "Steven", "Peter", "Parker"};
ArrayList<String> singingGroup = new ArrayList<String>();
singingGroup.add("Patrick");
singingGroup.add("Jane");
singingGroup.add("Joe");
singingGroup.add("Susan");
singingGroup.add("Amy");
我怎样才能做到这一点? 因为我知道如何检查一个项目是否包含在另一个数组中,如下所示 。 但是,如果一个不存在,则不存在于另一个中 。
if (Arrays.asList(Winners).contains(singingGroup)) {
您可以使用
Collections.disjoint(singingGroup, Arrays.asList(Winners));
要测试的是,这2个参数没有相同的公共元素。 (另请参阅javadoc )
对结果的求反似乎是您要寻找的。
Collections.disjoint是一种存档方法,但是您也可以使用keepAll()方法。
仅保留此列表中指定集合中包含的元素(可选操作)。 换句话说,从该列表中删除所有未包含在指定集合中的元素。
String Winners[] = {"Jennifer", "Steven", "Peter", "Parker"};
ArrayList<String> singingGroup = new ArrayList<String>();
singingGroup.add("Patrick");
singingGroup.add("Jane");
singingGroup.add("Joe");
singingGroup.add("Susan");
singingGroup.add("Amy");
List<String> WinnerList = new ArrayList<>(Arrays.asList(Winners));
WinnerList.retainAll(singingGroup);
System.out.println("retainList = " + WinnerList);
产量
list1 = []
String Winners[] = {"Jennifer", "Steven", "Peter", "Parker"};
ArrayList<String> singingGroup = new ArrayList<String>();
singingGroup.add("Steven");
singingGroup.add("Jane");
singingGroup.add("Joe");
singingGroup.add("Susan");
singingGroup.add("Jennifer");
List<String> WinnerList = new ArrayList<>(Arrays.asList(Winners));
WinnerList.retainAll(singingGroup);
System.out.println("retainList = " + WinnerList);
产量
retainList = [Jennifer, Steven]
您还可以像这样检查:
String Winners[] = {"Jennifer", "Patrick", "Peter", "Parker"};
ArrayList<String> singingGroup = new ArrayList<String>();
singingGroup.add("Patrick");
singingGroup.add("Jane");
singingGroup.add("Joe");
singingGroup.add("Susan");
singingGroup.add("Amy");
for(int i=0; i< Winners.length;i++)
{
if(singingGroup.contains(Winners[i]))
{
System.out.println("duplicate");
}
}
您可以使用Apache Commons提供的CollectionUtils类。
使用交集方法(如果要对公共元素做一些事情很有用):
Collection<String> intersection = CollectionUtils.intersection(singingGroup, Arrays.asList(Winners));
if (intersection.size() > 0){
// At least one element contained in the intersection
}
或者,使用containsAny方法:
if (CollectionUtils.containsAny(singingGroup, Arrays.asList(Winners))){
// True if at least one common element exists in both lists
}
//for loop would be perfect to check if element i = element i
int i =0;
int loopCount = 0;
while(loopCount < Winners.lenght)
{
for(int i =0; i < singingGroup.length; i++)
{
if(Winners[loopCount] == singingGroup[i])
{
System.out.println(Winners[loopCount] + "is apart of the winners");
}//end of comparing if
if(i == singing.Group.length)
{
loopCount ++;
} //end of i == singingGroup
}//end of for loop
}//end of while loop
这不是最佳的代码,但是如果您急需它,它将起作用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.