1
的分組,我有以下POGO類Groovy的名單由天日期字段
public class Person{
String name;
Date born;
}
def persons=[] // List of person objects'
如何用DATE類型的字段組列表。而是,按照出生日期將列表按照出生日期分組,而不考慮小時,分鐘...
的分組,我有以下POGO類Groovy的名單由天日期字段
public class Person{
String name;
Date born;
}
def persons=[] // List of person objects'
如何用DATE類型的字段組列表。而是,按照出生日期將列表按照出生日期分組,而不考慮小時,分鐘...
persons.groupBy{it.born.date+'/'+(it.born.month+1)+'/'+(it.born.year+1900)}
結果將是散列圖。
假設persons=[p1,p2,p3,p4,p5]
即:
[ '20/11/1970':[p1,p3],
'15/09/1989':[p2,p4,p5] ]
一個簡單的方法是;給定一個Person類:
public class Person {
String name
Date born
String toString() {
name
}
}
我們可以使他們的列表:
import groovy.time.*
def people = use(TimeCategory) {
[ new Person(name: 'p1', born: new Date() - 4.days),
new Person(name: 'p2', born: new Date() - 2.days),
new Person(name: 'p3', born: new Date() - 4.days),
new Person(name: 'p4', born: new Date() - 2.days),
new Person(name: 'p5', born: new Date() - 2.days) ]
}
,然後只用Date.format
:
people.groupBy{ it.born.format('dd/MM/yyyy') }
如果born
應該只存儲日期一人出生了,而不是時間,你可以把Person
改爲:
public class Person {
String name
Date born
void setBorn(Date born) {
this.born = born.clearTime()
}
String toString() {
name
}
}
然後你可以這樣做:
people.groupBy{ it.born }
要獲得Map
與Date
對象的鍵:
[ Sun Feb 02 00:00:00 GMT 2014:[p1, p3],
Tue Feb 04 00:00:00 GMT 2014:[p2, p4, p5] ]