//目标集合
List<OrderLoan> orderLoanSuccess = orderLoanMapper.getOrderLoanSuccess(eventType, startOfDay, endOfDay);
//根据某个值对集合进行分组
Map<String, List<OrderLoan>> collect = orderLoanSuccess.stream().collect(groupingBy(OrderLoan::getCpid));
//每组随机取出的条数
Integer countN = 5;
//最后获取的每组随机取n条的list
List<OrderLoan> randomList = new ArrayList<>();
Random random = new Random();
collect.forEach((key, orderLoans) -> {
Collections.shuffle(orderLoans);
int count = orderLoans.size() >= countN ? countN : orderLoans.size();
List<OrderLoan> newList = Stream.iterate(random.nextInt(orderLoans.size()), i -> random.nextInt(orderLoans.size()))
.map(orderLoans::get).distinct().limit(count)
.collect(Collectors.toList());
randomList.addAll(newList);
});