[英]What would be the best way of converting Object ArrayList to Double List
[英]what would be best way to convert List of ArrayList<Object> to a custom object java11 Spring boot 2.1
我有 ArrayList 对象列表,其中对象可以是文本、BigDecimal、Long
List<Object> data = {
{"date","prize1","cardsNumers","cardObtained","totalCards","anotherPrize"},
{"2020-05-01",435345.67,43,56,67,345345345},
{"2020-03-01",45656.2,34,67,23,456456},
{"2020-02-01",56565,34,56,67,878987}
}
arrayList 中的第 1、2、3 等对象是第 0 个 arraylist 中提到的每个字段的值。 在如下表中,
我想从上面获取每个文件的总和并分配给下面自定义 Object 的同一字段,
public class SumObject {
private Date date;
private BigDecimal sumPrize1;
private BigDecimal sumCardsNumers;
private long sumCardObtained;
private long sumTotalCards;
private long sumAnotherPrize;
}
我通过遍历 List 中的 arrayList 来实现这一点,并通过 get(index) 方法获取值。 但我想知道是否有任何其他好的方法可以做到这一点。
如果有人有任何建议,请发布答案或给我一个我可以阅读的文件的方向。
提前致谢。
在这种情况下,最好使用下面的数据结构来描述一个表数据:
List<BigDecimal> prizes1 = {435345.67, 45656.2, 56565};
List<BigDecimal> cardsNumbers = {43, 34, 34};
List<Long> cardsObtained = {56, 67, 56};
List<Long> totalCards = {67, 23, 67};
List<Long> anotherPrizes = {345345345, 456456, 878987};
这样,每个表行都由每个 List 上的 get(index) 描述。 此并行列表对您的聚合很有用:
BigDecimal sumPrize1 = prizes1.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal sumCardsNumers = cardsNumebrs.stream().reduce(BigDecimal.ZERO, BigDecimal::add);
long sumCardObtained = cardsObtained.stream().sum();
long sumTotalCards = totalCards.stream().sum();
long sumAnotherPrize = anotherPrizes.stream().sum();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.