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] ]