如何检查列表以查看元素是否存在?

时间:2017-08-22 17:22:48

标签: java list contains

我有一个简单的核心java问题。我有一个包含多个响应代码的列表。我根据列表中的响应代码返回消息。对于其中一个场景,我必须检查列表中是否包含任何一个响应代码。我已经通过以下方式完成了它,但它忽略了它,代码转到了else块。因此,如果代码是ES03或ES04或其中任何一个,我想填充emailValidationMessage变量,但它不会这样做。

List<String> messageCodes = this.getEmailValidationCode( eSignatureInTO );

    if( messageCodes.contains( "ES01" ) ) {
                IESignatureIntegrationOutDto eSignatureOutTO = getEsignService().resendDocuments( eSignatureInTO );
                eSignatureInTO.setResendDocs( eSignatureOutTO.isResendDocs() );

    } else if( messageCodes.contains( "EE01" ) ) {
                emailValidationMessage = UiIntegrationKeyConstants.EMAIL_FORMAT_ERROR_MESSAGE;

    } else if( messageCodes.contains( Arrays.asList( "ES02", "ES03", "ES04", "EE02", "EE03", "EE04" ) ) ) {
                emailValidationMessage = UiIntegrationKeyConstants.EMAIL_VALIDATION_ERROR_MESSAGE;

    } else {
                emailValidationMessage = UiIntegrationKeyConstants.EMAIL_VALIDATION_MESSAGE;
}

谢谢...

3 个答案:

答案 0 :(得分:2)

更改包含表达式:

List<String> messageCodes = this.getEmailValidationCode( eSignatureInTO );

if( messageCodes.contains( "ES01" ) ) {
    IESignatureIntegrationOutDto eSignatureOutTO = getEsignService().resendDocuments( eSignatureInTO );
    eSignatureInTO.setResendDocs( eSignatureOutTO.isResendDocs() );
} else if( messageCodes.contains( "EE01" ) ) {
    emailValidationMessage = UiIntegrationKeyConstants.EMAIL_FORMAT_ERROR_MESSAGE;
} else if( !Collections.disjoint(messageCodes,Arrays.asList( "ES02", "ES03", "ES04", "EE02", "EE03", "EE04" ) ) ) {
    emailValidationMessage = UiIntegrationKeyConstants.EMAIL_VALIDATION_ERROR_MESSAGE;
} else {
    emailValidationMessage = UiIntegrationKeyConstants.EMAIL_VALIDATION_MESSAGE;
}

Collections.disjoint充当&#34;包含任何&#34;比较。这样,如果存在一个或多个错误代码,它将进入if子句。

答案 1 :(得分:1)

  

因此,如果代码是ES03或ES04或我想要的任何一个   填充emailValidationMessage变量但不执行此操作。

你不应该这样做:

if( messageCodes.contains("ES03") || messageCodes.contains("ES04")) { 
      emailValidationMessage = "whatever your value should be";
}

答案 2 :(得分:1)

在第二个if中,你要问的是String数组中是否存有 list 。那不行。您应该为要查找的每个值执行.contains