高效开发之:判断复杂list中的对象属性是否包含某个值

技术使用:使用了Java 8引入的Stream API以及Optional类。这些特性用于简化集合的处理和减少空指针异常。

 List<ResourceInfoDto> authData = chatBase.getData();
 String baseName = dto.getBaseName();
 Optional<ResourceInfoDto> authWithResourceCode = authData.stream()
         .filter(auth -> baseName.equals(auth.getResourcecode()))
         .findFirst();
 if (authWithResourceCode.isPresent()) {
 	//拥有此库的权限,执行逻辑
 }else {
 	//无权限
     logger.warn("卡号为{}的用户越权访问{}知识库",dto.getStaffCode(),dto.getBaseName());
     return converseHandleWrapper.handle2("您无权访问此知识库");
 }

代码解析:

  • **authData.stream():**将authData列表转化为Stream,以便于进行流处理。
  • **filter(auth -> baseName.equals(auth.getResourcecode())):**使用filter方法筛选出所有ResourceInfoDto对象中resourcecode与baseName相等的元素。
  • **findFirst():**尝试找到流中的第一个元素。它返回一个Optional对象,该对象可能包含流中的第一个元素,也可能为空。
  • 通过调用isPresent()方法检查Optional对象是否包含一个值。如果包含一个值,即找到了与给定baseName匹配的ResourceInfoDto对象,那么执行if语句块中的代码。如果没有找到匹配的对象,执行else语句块的代码。

你可能感兴趣的:(高效开发,java)