下面的举例:
1 从数据库中取到了10条数据,放到了list中,这十条数据包含如下字段:订单号,订单明细号,发票号
2 10条数据中订单明细号都是不同的,但是订单号是可以相同的,假设订单号前三个是A,后三个是B,最后四个是C
3 那么问题来了,由于业务需要,现在只想取每笔订单的第一条明细订单的发票,请问该如何实现呢?
4.订单编号中的相同的数据是连续的
思路:首先获得所有数据list(orders),创建返回的list(targetOrders)
然后将第一条存储进去list(targetOrders),默认订单编号orderId为第一条的数据的
最后遍历list(order),因为订单编号中的相同的数据是连续的,所以从第二条数据起,只要跟第一条相同的就跳过,不同的就设置新的默认orderId,并将这一条新的orderId的数据存储进去list(targetOrder)
//数据库所有订单
List<Order> orders = getOrders();
//创建返回目标订单,储存每笔订单的第一条明细订单的发票
List<Order> targetOrders = new Arraylist<Order>;
//第一条就是第一个订单的明细
Order order = list.get(0);
//首先将第一条数据存进去需要返回的订单中
targetOrders.add(order );
//获取第一条订单编号
Integer currentOrderId = order.getOrderId();
//从第二个记录开始,找下一条订单的明细
if(list.size()>1){
for(int i =1;i<list.size();i++){
Order order2 = list.get(i);
//订单编号是同一条,继续找
if(currentOrderId == order2.getOrderId()){
continue;
}
//设置下一个编号
currentOrderId = order2.getOrderId();
//找到了,就存储到返回的list中
targetOrders.add(order2);
}
}