问题:我有一个list列表,每个对象里面存有一些字段,这些对象中有mobile相同,但是create_time不相同的,我想保留时间靠前的那条数据,其它的干掉,怎么做比较好?
1、首先想到的是先使用stream来对集合进行分组处理,把mobile相同的放在一个集合中并按时间排序,然后再次对Map集合进行一次循环,取集合中的第一个,这样把所有集合中第一个取出后就获得了你当前需要的一个集合。
2、想了很久,用上面这种方法的处理效率太低,而且数据量大之后,耗费的资源和时间较多,所以放弃了这种方法。我的目光转移到了group by这个方法上,在sql中,对所查的数据进行一次group by之后,只会出现一条符合该条件的数据,所以我尝试查询了一下,果然在对时间进行顺序排序后,group by最终给出的是第一次出现的一条数据,特此记录。
ps:还可以尝试使用distinct,这种方法也可行
网友评论