文章目录
项目背景
在项目中会遇到list中多个状态判断,状态值相等时,总体返回为true。
方案一、for循环实现
实现思路
遍历list,当出现不一致时,直接跳出循环,实现代码如下所示。
java
private static boolean forSameResult(List<Order> orderList){
boolean resultFlag = true;
for(Order order : orderList){
if(!"enable".equals(order.getStstus())){
resultFlag = false;
break;
}
}
return resultFlag;
}
调用代码如下所示。
java
public static void main(String[] args){
List<Order> orderList = new ArrayList<>();
Order orderOne = new Order();
orderOne.setOrderNo("111111");
orderOne.setStstus("enable");
orderList.add(orderOne);
Order orderTwo = new Order();
orderTwo.setOrderNo("222222");
orderTwo.setStstus("enable");
orderList.add(orderTwo);
boolean oneSameResult = forSameResult(orderList);
System.out.println("转换出来的oneSameResult为:"+oneSameResult);
}
执行结果如下所示。
若两个不一致,执行结果如下图所示。
方案二、stream实现
实现思路
可使用Java8的特性,即 stream 的 allMatch 方法实现,本质是遍历判断。
java
private static boolean streamResult(List<Order> orderList){
boolean resultFlag = orderList.stream().allMatch(order -> "enable".equals(order.getStstus()));
System.out.println("转换出来的resultFlag为:"+resultFlag);
return resultFlag;
}
调用代码如下所示。
java
public static void main(String[] args){
List<Order> orderList = new ArrayList<>();
Order orderOne = new Order();
orderOne.setOrderNo("111111");
orderOne.setStstus("enable");
orderList.add(orderOne);
Order orderTwo = new Order();
orderTwo.setOrderNo("222222");
orderTwo.setStstus("enable");
orderList.add(orderTwo);
boolean twoSameResult = streamSameResult(orderList);
System.out.println("转换出来的twoSameResult为:"+twoSameResult);
}
执行代码,控制台返回如下图所示。
若两个不一致,执行结果如下图所示。