Массив группировки Java по году, месяцуJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Массив группировки Java по году, месяцу

Сообщение Anonymous »

У меня есть такой массив:

Код: Выделить всё

[
{
"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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»