如何检查java字符列表除了C或N之外还有任何值



我有List<Character>,我想知道如何检查列表中除了C或N之外是否还有其他值

String sql = "SELECT distinct(CODE_STATUS_TYPE) FROM AMEQPS_REWQUEST.PSFDSS_CR_TB " +
" WHERE  NBR_CR_KEY != :nbrCrKey";

Query q = em.createNativeQuery(sql).setParameter("nbrCrKey", cdId);
List<Character> codeStatus = (ArrayList<Character>) q.getResultList();
// THIS WILL RETURN ANYTHING W,R,D,C,N 

像这样的if块有效吗?谢谢。这是正确的数据检查吗?

if(!codeStatus.contains('C')&&!codeStatus.contains('N')){
}

在上面的方法中,您要迭代List两次,并检查它是否有CN,但通过使用stream和allMatch,您可以在一次迭代中完成

codeStatus.stream().allMatch(c->c.equals('N') || c.equals('C'));  

使用Stream,可以按如下方式进行:

import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Character> codeStatus = Arrays.asList(new Character[] { 'C','N'});
System.out.println(!codeStatus.stream().allMatch(c->c.equals('N') || c.equals('C')));
}
}

输出:

false

另一次运行:导入java.util.Arrays;导入java.util.List;

public class Main {
public static void main(String[] args) {
List<Character> codeStatus = Arrays.asList(new Character[] { 'C','N','T'});
System.out.println(!codeStatus.stream().allMatch(c->c.equals('N') || c.equals('C')));
}
}

输出:

true

如果您不想使用Stream,可以按以下方式进行:

import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<Character> codeStatus = Arrays.asList(new Character[] { 'C','N','T'});
if (codeStatus.size()==0){
System.out.println("The list does not contain any element");
} else if (codeStatus.size()==1) {
if(codeStatus.contains('C') || codeStatus.contains('N')) {
System.out.println("Either 'C' or 'N' exists");
} else {
System.out.println("Neither 'N' nor 'C' exists");
}            
} else if(codeStatus.size()==2) {
if (codeStatus.contains('C') && codeStatus.contains('N')) {
System.out.println("Only 'C' and 'N' exists");
} else if((codeStatus.contains('C') || codeStatus.contains('N'))){
System.out.println("Other than 'C' or 'N', some other character(s) exist(s)");
}
}else if (codeStatus.size()>2) {
if((codeStatus.contains('C') && codeStatus.contains('N'))) {
System.out.println("Other than 'C' and 'N', some other character(s) exist(s)");
}else if((codeStatus.contains('C') || codeStatus.contains('N'))){
System.out.println("Other than 'C' or 'N', some other character(s) exist(s)");
} else {
System.out.println("Neither 'N' nor 'C' exists");
}           
}
}
}

输出:

Other than 'C' and 'N', some other character(s) exist(s)

最新更新