我有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
两次,并检查它是否有C
或N
,但通过使用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)