Я немного знаю Java, но не знаю groovy. Я получил результат ниже, используя некоторые из моих groovy знаний и использовал операцию сбора groupBy results.groupBy({ plan -> plan.planItem.self })
, чтобы достичь этого.
Я хочу сравнить и получить самые ранние startDate
и последние endDate
для URL-адреса planItem.self
, заканчивающегося на TEST-2
. Вы можете видеть, что TEST-2
имеет 2 записи с разными startDate
и endDate
. Последний объект, который я хочу, имеет только одну запись TEST-2
, но даты, как указано выше, и удаление всех объектов, кроме одного. Аналогично для всех страниц типа AP-3
, AP-1
. У меня есть объект коллекции, как показано ниже (вы можете заметить, что есть несколько объектов для TEST-2
и AP-3
).
{
"https://dev.example.com/pages/TEST-2": [
{
"startDate": "2020-05-16",
"endDate": "2020-05-17",
"planItem": {
"self": "https://dev.example.com/pages/TEST-2",
"type": "ISSUE"
},
},
{
"startDate": "2020-05-17",
"endDate": "2020-05-20",
"planItem": {
"self": "https://dev.example.com/pages/TEST-2",
"type": "ISSUE"
}
}
],
"https://dev.example.com/pages/AP-3": [
{
"startDate": "2020-05-16",
"endDate": "2020-05-17",
"planItem": {
"self": "https://dev.example.com/pages/AP-3",
"type": "ISSUE"
}
},
{
"startDate": "2020-05-27",
"endDate": "2020-05-27",
"planItem": {
"self": "https://dev.example.com/pages/AP-3",
"type": "ISSUE"
}
}
],
"https://dev.example.com/pages/AP-1": [
{
"startDate": "2020-05-16",
"endDate": "2020-05-17",
"planItem": {
"self": "https://dev.example.com/pages/AP-1",
"type": "ISSUE"
}
}
],
"https://dev.example.com/pages/AP-4": [
{
"startDate": "2020-05-16",
"endDate": "2020-05-18",
"planItem": {
"self": "https://dev.example.com/pages/AP-4",
"type": "ISSUE"
}
}
]
}
И выходной объект, который я хочу создать, выглядит следующим образом (вы можете обратите внимание, что в выходной коллекции есть только один объект для TEST-2
и AP-3
), а также удалены ненужные атрибуты. Пожалуйста, посоветуйте мне использовать лучшие из операций Groovy, чтобы ускорить весь процесс, потому что у меня есть только 60 секунд для выполнения этих операций вместе с вызовами REST, которые я сделаю, как только эти объекты будут готовы в нужном мне формате, поэтому время обработки имеет большое значение.
{
"https://dev.example.com/pages/TEST-2": [
{
"startDate": "2020-05-16",
"endDate": "2020-05-20"
}
],
"https://dev.example.com/pages/AP-3": [
{
"startDate": "2020-05-16",
"endDate": "2020-05-27"
}
],
"https://dev.example.com/pages/AP-1": [
{
"startDate": "2020-05-16",
"endDate": "2020-05-17"
}
],
"https://dev.example.com/pages/AP-4": [
{
"startDate": "2020-05-16",
"endDate": "2020-05-18"
}
]
}
Даты должны быть преобразованы из String в date.