Sorting 如何在groovy中对下面的列表进行排序
我在groovy中有这样一个列表Sorting 如何在groovy中对下面的列表进行排序,sorting,collections,groovy,Sorting,Collections,Groovy,我在groovy中有这样一个列表 udbmslList=[ [133, 2011-11-30 00:00:00.0], [141, 2011-11-29 00:00:00.0], [132, 2011-11-28 00:00:00.0], [11, 2011-12-03 00:00:00.0], [119, 2011-12-02 00:00:00.0],
udbmslList=[
[133, 2011-11-30 00:00:00.0],
[141, 2011-11-29 00:00:00.0],
[132, 2011-11-28 00:00:00.0],
[11, 2011-12-03 00:00:00.0],
[119, 2011-12-02 00:00:00.0],
[182, 2011-12-01 00:00:00.0],
[12, 2011-12-04 00:00:00.0]
]
如何将上述列表排序为单个列表/映射,或按日期升序保持相同的结构(列表列表)(上述列表中不能有2个相同的日期)
我还想删除日期的时间部分。
感谢对列表进行排序,假设这些是实际日期,而不是显示的无效立即数:
sorted = udbmslList.sort { it[1] }
使用SimpleDateFormat
或Groovy的Date
扩展不删除时间
要创建具有相同结构但仅包含日期字符串元素的数组(使用一些伪数据),请执行以下操作:
要对列表进行排序,请使用
udbmslList.sort{it[1]}
要显示没有时间的日期,您可以使用类似于
udbmslList.each{println it[1].format('yyyy-MM-dd')}
的方法假设日期是字符串,因为它们似乎是yyyy-MM-dd格式,可以按字典顺序排序
def udbmslList=[
[133, "2011-11-30 00:00:00.0"],
[141, "2011-11-29 00:00:00.0"],
[132, "2011-11-28 00:00:00.0"],
[11, "2011-12-03 00:00:00.0"],
[119, "2011-12-02 00:00:00.0"],
[182, "2011-12-01 00:00:00.0"],
[12, "2011-12-04 00:00:00.0"]
]
// Get rid of the timestamp part of the date and convert into a map.
def result = udbmslList.collectEntries {
[(it[0]): it[1].split()[0]]
}
// Sort by date lexicographically.
result.sort { it.value }
assert result == [
132: "2011-11-28",
141: "2011-11-29",
133: "2011-11-30",
182: "2011-12-01",
119: "2011-12-02",
11: "2011-12-03",
12: "2011-12-04"
]
编辑:如果日期是日期
对象,则可以先按日期对列表排序,然后将其转换为具有适当格式的地图:
def result = udbmslList.sort { it[1] }
.collectEntries { [(it[0]): it[1].format('yyyy-MM-dd')] }
实际的数据类型是什么?这些是日期吗?如果你能帮我处理这个列表,那就太好了…请参考我的下一个问题。。
def result = udbmslList.sort { it[1] }
.collectEntries { [(it[0]): it[1].format('yyyy-MM-dd')] }