繁体   English   中英

如何检查ArrayList <String> 包含字符串数组中的任何元素?

[英]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.

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