有一个场景,就是一个有list,list里面放的是Card对象,Card对象有多个属性值,包括卡用户信息、卡最近使用时间opTime,这个list是查询用户卡包得到的卡列表。
现在有一个需求,就是查询卡列表时,我不需要把所有的卡都查出来,只需要拿到一张用户最近使用的卡来。这个时间最近的依据就是opTime距离现在最近,要怎样来实现?
下面有一个比较简单的实现方法:
代码如下
方法源码:
public CentralCard selectLastOne(List<CentralCard> list) {
CentralCard card = new CentralCard();
Long dates[] = new Long[list.size()];
for (int i = 1; i <= list.size(); i++) {
// 把date类型的时间对象转换为long类型,时间越往后,long的值就越大,
// 所以就依靠这个原理来判断距离现在最近的时间
dates[i - 1] = list.get(i).getOpTime().getTime();
}
Long maxIndex = dates[0];// 定义最大值为该数组的第一个数
for (int j = 0; j < dates.length; j++) {
if (maxIndex < dates[j]) {
maxIndex = dates[j];
// 找到了这个j
card = list.get(j + 1);
}
}
return card;
}
原理就是把date类型的时间转换为long型,距离现在越近的时间的long的值就越大。