常用语法示例:
public static void main(String[] args) { List<OrderInfo> orderInfoList = Lists.newArrayList(); List<OperateInfo> operateInfoList = Lists.newArrayList(); //operateInfoList转map(key:operateId value:operateName) Map<Integer, String> operateMap = operateInfoList.stream().collect(Collectors. toMap(OperateInfo::getOperateId, OperateInfo::getOperateName, (x, y) -> x)); //orderInfoList分组(key:type value:List<OrderInfo>) Map<Integer, List<OrderInfo>> orderInfoGroup = orderInfoList.stream() .filter(order -> order.getType() != null) .collect(Collectors.groupingBy(OrderInfo::getType)); List<List<OrderInfoResponse>> result = new ArrayList<>(); orderInfoGroup.values().forEach(list -> { //根据orderId递减 list = list.stream().sorted(Comparator.comparing(OrderInfo::getOrderId).reversed()).collect(Collectors.toList()); //List<OrderInfo>转List<OrderInfoResponse> List<OrderInfoResponse> responses = list.stream().map(order -> { OrderInfoResponse response = new OrderInfoResponse(); response.setOrderId(order.getOrderId()); response.setTypeName(OrderTypeEnum.getNameByCode(order.getType())); response.setCreatorName(operateMap.get(order.getCreatorId())); return response; }).collect(Collectors.toList()); result.add(responses); }); //orderInfoList第一个type为TYPE1的对象 OrderInfo orderInfo = orderInfoList.stream() .filter(order -> OrderTypeEnum.TYPE1.getCode().equals(order.getType())) .findFirst().orElse(null); }
Bean:
@Data public class OrderInfo { private Long orderId; private Integer type; private Integer creatorId; }
@Data public class OperateInfo { private Integer operateId; private String operateName; }
public enum OrderTypeEnum { TYPE1(1,"类型1"), TYPE2(2,"类型2"); private Integer code; private String name; OrderTypeEnum(Integer code, String name) { this.code = code; this.name = name; } public Integer getCode() { return code; } public String getName() { return name; } public static String getNameByCode(Integer code) { for (OrderTypeEnum typeEnum : OrderTypeEnum.values()) { if (typeEnum.code.equals(code)) { return typeEnum.name; } } return ""; } }
tips:
1,list集合为null时,list.stream()会抛异常。