問(wèn)題:我有一個(gè)list列表,每個(gè)對(duì)象里面存有一些字段,這些對(duì)象中有mobile相同,但是create_time不相同的,我想保留時(shí)間靠前的那條數(shù)據(jù),其它的干掉,怎么做比較好?
1、首先想到的是先使用stream來(lái)對(duì)集合進(jìn)行分組處理,把mobile相同的放在一個(gè)集合中并按時(shí)間排序,然后再次對(duì)Map集合進(jìn)行一次循環(huán),取集合中的第一個(gè),這樣把所有集合中第一個(gè)取出后就獲得了你當(dāng)前需要的一個(gè)集合。
2、想了很久,用上面這種方法的處理效率太低,而且數(shù)據(jù)量大之后,耗費(fèi)的資源和時(shí)間較多,所以放棄了這種方法。我的目光轉(zhuǎn)移到了group by這個(gè)方法上,在sql中,對(duì)所查的數(shù)據(jù)進(jìn)行一次group by之后,只會(huì)出現(xiàn)一條符合該條件的數(shù)據(jù),所以我嘗試查詢(xún)了一下,果然在對(duì)時(shí)間進(jìn)行順序排序后,group by最終給出的是第一次出現(xiàn)的一條數(shù)據(jù),特此記錄。
ps:還可以嘗試使用distinct,這種方法也可行