Anonymous
Массив группировки Java по году, месяцу
Сообщение
Anonymous » 09 ноя 2025, 08:13
У меня есть такой массив:
Код: Выделить всё
[
{
"auction_qty": 1,
"value_of_sale": 250,
"month": 10,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 250,
"ts": 1351968521
},
{
"auction_qty": 1,
"value_of_sale": 100,
"month": 10,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 100,
"ts": 1351970719
},
{
"auction_qty": 1,
"value_of_sale": 350,
"month": 10,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 350,
"ts": 1351970489
},
{
"auction_qty": 1,
"value_of_sale": 135,
"month": 10,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 135,
"ts": 1351964112
},
{
"auction_qty": 1,
"value_of_sale": 499,
"month": 10,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 499,
"ts": 1351965308
},
{
"auction_qty": 1,
"value_of_sale": 100,
"month": 10,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 100,
"ts": 1352462230
},
{
"auction_qty": 1,
"value_of_sale": 100,
"month": 10,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 100,
"ts": 1352462298
},
{
"auction_qty": 1,
"value_of_sale": 100,
"month": 10,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 100,
"ts": 1352462278
},
{
"auction_qty": 1,
"value_of_sale": 120,
"month": 10,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 120,
"ts": 1352643128
},
{
"auction_qty": 1,
"value_of_sale": 300,
"month": 10,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 300,
"ts": 1352642805
},
{
"auction_qty": 1,
"value_of_sale": 150,
"month": 10,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 150,
"ts": 1352234180
},
{
"auction_qty": 1,
"value_of_sale": 100,
"month": 10,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 100,
"ts": 1353269022
},
{
"auction_qty": 1,
"value_of_sale": 350,
"month": 10,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 350,
"ts": 1354105741
},
{
"auction_qty": 1,
"value_of_sale": 500,
"month": 10,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 500,
"ts": 1353864141
},
{
"auction_qty": 1,
"value_of_sale": 2000,
"month": 11,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 2000,
"ts": 1354541234
},
{
"auction_qty": 1,
"value_of_sale": 100,
"month": 11,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 100,
"ts": 1354892155
},
{
"auction_qty": 1,
"value_of_sale": 100,
"month": 11,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 100,
"ts": 1355256131
},
{
"auction_qty": 1,
"value_of_sale": 100,
"month": 11,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 100,
"ts": 1355051037
},
{
"auction_qty": 1,
"value_of_sale": 1000,
"month": 11,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 1000,
"ts": 1355001978
},
{
"auction_qty": 1,
"value_of_sale": 1000,
"month": 11,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 1000,
"ts": 1355001980
},
{
"auction_qty": 1,
"value_of_sale": 1000,
"month": 11,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 1000,
"ts": 1355001981
},
{
"auction_qty": 1,
"value_of_sale": 500,
"month": 11,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 500,
"ts": 1355414838
},
{
"auction_qty": 1,
"value_of_sale": 400,
"month": 11,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 400,
"ts": 1355040754
},
{
"auction_qty": 1,
"value_of_sale": 400,
"month": 11,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 400,
"ts": 1355040797
},
{
"auction_qty": 1,
"value_of_sale": 400,
"month": 11,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 400,
"ts": 1355040908
},
{
"auction_qty": 1,
"value_of_sale": 100,
"month": 11,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 100,
"ts": 1356248959
},
{
"auction_qty": 1,
"value_of_sale": 500,
"month": 11,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 500,
"ts": 1356713457
},
{
"auction_qty": 1,
"value_of_sale": 300,
"month": 11,
"trans_qty": 1,
"year": 2012,
"user": 335,
"trans_price": 300,
"ts": 1356968997
},
{
"auction_qty": 1,
"value_of_sale": 150,
"month": 0,
"trans_qty": 1,
"year": 2013,
"user": 335,
"trans_price": 150,
"ts": 1357082245
},
{
"auction_qty": 1,
"value_of_sale": 100,
"month": 0,
"trans_qty": 1,
"year": 2013,
"user": 335,
"trans_price": 100,
"ts": 1357082264
},
{
"auction_qty": 1,
"value_of_sale": 400,
"month": 0,
"trans_qty": 1,
"year": 2013,
"user": 335,
"trans_price": 400,
"ts": 1357482640
},
{
"auction_qty": 1,
"value_of_sale": 400,
"month": 0,
"trans_qty": 1,
"year": 2013,
"user": 335,
"trans_price": 400,
"ts": 1357482642
},
{
"auction_qty": 1,
"value_of_sale": 400,
"month": 0,
"trans_qty": 1,
"year": 2013,
"user": 335,
"trans_price": 400,
"ts": 1357482638
},
{
"auction_qty": 1,
"value_of_sale": 400,
"month": 0,
"trans_qty": 1,
"year": 2013,
"user": 335,
"trans_price": 400,
"ts": 1357981401
},
{
"auction_qty": 2,
"value_of_sale": 400,
"month": 0,
"trans_qty": 1,
"year": 2013,
"user": 335,
"trans_price": 400,
"ts": 1357979518
}
]
Я хотел бы сгруппировать их по пользователю, году и месяцу. Далее я хотел бы суммировать (trans_qty) и sum (value_of_sale) в пользователях, годах и месяцах.
Мой код, который создает это, выглядит следующим образом:
Код: Выделить всё
for (Long user : users) {
final Statement stmt = new Statement();
stmt.setNamespace(xxxx);
stmt.setSetName(xxxxx);
stmt.setFilters(Filter.equal("u", user));
final RecordSet records = aerospikeClient.query(null, stmt);
StreamSupport.stream(records.spliterator(), true)
.flatMap(l -> {
final ArrayList auctionsFromRecord = (ArrayList) l.record.getValue("v");
return Optional.ofNullable(auctionsFromRecord).isPresent() ? auctionsFromRecord.stream() : Stream.empty();
})
.map(r -> parseAuction(r))
.collect(Collectors.toList())
.forEach(row -> {
if (row.getT().size() > 0) {
for (Transaction trans : row.getT()) {
if (trans.getTs() >= tsFrom && trans.getTs()
Подробнее здесь: [url]https://stackoverflow.com/questions/36769543/java-grouping-array-by-year-month[/url]
1762665233
Anonymous
У меня есть такой массив: [code][ { "auction_qty": 1, "value_of_sale": 250, "month": 10, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 250, "ts": 1351968521 }, { "auction_qty": 1, "value_of_sale": 100, "month": 10, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 100, "ts": 1351970719 }, { "auction_qty": 1, "value_of_sale": 350, "month": 10, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 350, "ts": 1351970489 }, { "auction_qty": 1, "value_of_sale": 135, "month": 10, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 135, "ts": 1351964112 }, { "auction_qty": 1, "value_of_sale": 499, "month": 10, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 499, "ts": 1351965308 }, { "auction_qty": 1, "value_of_sale": 100, "month": 10, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 100, "ts": 1352462230 }, { "auction_qty": 1, "value_of_sale": 100, "month": 10, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 100, "ts": 1352462298 }, { "auction_qty": 1, "value_of_sale": 100, "month": 10, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 100, "ts": 1352462278 }, { "auction_qty": 1, "value_of_sale": 120, "month": 10, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 120, "ts": 1352643128 }, { "auction_qty": 1, "value_of_sale": 300, "month": 10, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 300, "ts": 1352642805 }, { "auction_qty": 1, "value_of_sale": 150, "month": 10, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 150, "ts": 1352234180 }, { "auction_qty": 1, "value_of_sale": 100, "month": 10, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 100, "ts": 1353269022 }, { "auction_qty": 1, "value_of_sale": 350, "month": 10, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 350, "ts": 1354105741 }, { "auction_qty": 1, "value_of_sale": 500, "month": 10, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 500, "ts": 1353864141 }, { "auction_qty": 1, "value_of_sale": 2000, "month": 11, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 2000, "ts": 1354541234 }, { "auction_qty": 1, "value_of_sale": 100, "month": 11, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 100, "ts": 1354892155 }, { "auction_qty": 1, "value_of_sale": 100, "month": 11, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 100, "ts": 1355256131 }, { "auction_qty": 1, "value_of_sale": 100, "month": 11, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 100, "ts": 1355051037 }, { "auction_qty": 1, "value_of_sale": 1000, "month": 11, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 1000, "ts": 1355001978 }, { "auction_qty": 1, "value_of_sale": 1000, "month": 11, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 1000, "ts": 1355001980 }, { "auction_qty": 1, "value_of_sale": 1000, "month": 11, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 1000, "ts": 1355001981 }, { "auction_qty": 1, "value_of_sale": 500, "month": 11, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 500, "ts": 1355414838 }, { "auction_qty": 1, "value_of_sale": 400, "month": 11, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 400, "ts": 1355040754 }, { "auction_qty": 1, "value_of_sale": 400, "month": 11, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 400, "ts": 1355040797 }, { "auction_qty": 1, "value_of_sale": 400, "month": 11, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 400, "ts": 1355040908 }, { "auction_qty": 1, "value_of_sale": 100, "month": 11, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 100, "ts": 1356248959 }, { "auction_qty": 1, "value_of_sale": 500, "month": 11, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 500, "ts": 1356713457 }, { "auction_qty": 1, "value_of_sale": 300, "month": 11, "trans_qty": 1, "year": 2012, "user": 335, "trans_price": 300, "ts": 1356968997 }, { "auction_qty": 1, "value_of_sale": 150, "month": 0, "trans_qty": 1, "year": 2013, "user": 335, "trans_price": 150, "ts": 1357082245 }, { "auction_qty": 1, "value_of_sale": 100, "month": 0, "trans_qty": 1, "year": 2013, "user": 335, "trans_price": 100, "ts": 1357082264 }, { "auction_qty": 1, "value_of_sale": 400, "month": 0, "trans_qty": 1, "year": 2013, "user": 335, "trans_price": 400, "ts": 1357482640 }, { "auction_qty": 1, "value_of_sale": 400, "month": 0, "trans_qty": 1, "year": 2013, "user": 335, "trans_price": 400, "ts": 1357482642 }, { "auction_qty": 1, "value_of_sale": 400, "month": 0, "trans_qty": 1, "year": 2013, "user": 335, "trans_price": 400, "ts": 1357482638 }, { "auction_qty": 1, "value_of_sale": 400, "month": 0, "trans_qty": 1, "year": 2013, "user": 335, "trans_price": 400, "ts": 1357981401 }, { "auction_qty": 2, "value_of_sale": 400, "month": 0, "trans_qty": 1, "year": 2013, "user": 335, "trans_price": 400, "ts": 1357979518 } ] [/code] Я хотел бы сгруппировать их по пользователю, году и месяцу. Далее я хотел бы суммировать (trans_qty) и sum (value_of_sale) в пользователях, годах и месяцах. Мой код, который создает это, выглядит следующим образом: [code]for (Long user : users) { final Statement stmt = new Statement(); stmt.setNamespace(xxxx); stmt.setSetName(xxxxx); stmt.setFilters(Filter.equal("u", user)); final RecordSet records = aerospikeClient.query(null, stmt); StreamSupport.stream(records.spliterator(), true) .flatMap(l -> { final ArrayList auctionsFromRecord = (ArrayList) l.record.getValue("v"); return Optional.ofNullable(auctionsFromRecord).isPresent() ? auctionsFromRecord.stream() : Stream.empty(); }) .map(r -> parseAuction(r)) .collect(Collectors.toList()) .forEach(row -> { if (row.getT().size() > 0) { for (Transaction trans : row.getT()) { if (trans.getTs() >= tsFrom && trans.getTs() Подробнее здесь: [url]https://stackoverflow.com/questions/36769543/java-grouping-array-by-year-month[/url]