我有一个作为查询结果生成的整数列表,我想在那个数组中添加那些元素是否可能?
List<Objects[]> list = EnquiryService.getQuantityById(60);
我将列表作为list=[4,5,6]
。
如何在列表中添加元素?
答案 0 :(得分:0)
通过将元素强制转换为int来添加元素。确保您的数组只包含Integer对象。你可以使用(int)object
来自java 7
BigDecimal sum = new BigDecimal(0);
for(Object o:list){
sum.add((BigDecimal)o);
}
int sumation=sum.intValueExact();
答案 1 :(得分:0)
尝试使用Java 8流来汇总List<Object[]>
:
BinaryOperator<Integer> integerAdder = (i, j) -> i + j;
Function<Object[], Integer> sumListOfObjects = oa -> Arrays.asList(oa)
.stream()
.map(o -> (Integer) o)
.reduce(0, integerAdder);
List<Object[]> listOfObjectArrays = Arrays.asList(new Integer[]{1, 2, 3},
new Integer[]{4, 5, 6});
int total = listOfObjectArrays
.stream()
.map(sumListOfObjects)
.reduce(0, integerAdder);
输出:
21
答案 2 :(得分:0)
我建议创建一个&#34;持有者&#34;为您的数据。
List<DataHolder> list = DataHolder.getFromListOfLists(EnquiryService.getQuantityById(60));
然后,您可以在每个持有人上致电getTotal()
。
public static class DataHolder {
Object [] list;
private int total;
public DataHolder(Object[] list) {
this.list = list;
this.total = 0;
//Sum the totals
for (Object o:list)
if (o != null)
total += (Integer)o;
}
//Total getter
public int getTotal() {
return this.total;
}
public static List<DataHolder> getFromListOfLists(List<Object[]> lists) {
List<DataHolder> holders = new ArrayList<>();
for (Object[] list:lists) {
holders.add(new DataHolder(list));
}
return holders;
}
}
打印出总数:
for (DataHolder holder:lists)
System.out.println(holder.getTotal());