gpt4 book ai didi

java - 如何将具有重复属性的元组组合成一个元组?

转载 作者:行者123 更新时间:2023-12-02 08:40:56 24 4
gpt4 key购买 nike

我创建了一个与 SQL 数据库中的表同名的 Java 类,并使用从该表检索到的信息从该 Java 类创建了多个对象,并将它们存储在 ArrayList 中。

CREATE TABLE `orderdetails` (
`orderNumber` int(11) NOT NULL,
`productCode` varchar(15) NOT NULL,
`quantityOrdered` int(11) NOT NULL,
`priceEach` decimal(10,2) NOT NULL,
`orderLineNumber` smallint(6) NOT NULL,
PRIMARY KEY (`orderNumber`,`productCode`),
KEY `productCode` (`productCode`),
CONSTRAINT `orderdetails_ibfk_1` FOREIGN KEY (`orderNumber`) REFERENCES `orders` (`orderNumber`),
CONSTRAINT `orderdetails_ibfk_2` FOREIGN KEY (`productCode`) REFERENCES `products` (`productCode`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

元组具有重复的 orderNumber,例如:

(10100,'S18_1749',30,'136.00',3),

(10100,'S18_2248',50,'55.09',2),

(10100,'S18_4409',22,'75.46',4),

然后将每个元组转换为与表同名的类的 java 对象,并存储在 Arraylist 中。

public ArrayList<OrderDetails> getOrders(String tableName) throws SQLException{
ArrayList<OrderDetails>od=new ArrayList<OrderDetails>();

try {
String query="SELECT * FROM "+tableName;
Statement s= con.createStatement();
ResultSet rs= s.executeQuery(query);

while(rs.next()) {

int orderNumber=rs.getInt("orderNumber");
String productCode=rs.getString("productCode");
int quantityOrdered=rs.getInt("quantityOrdered");
double priceEach=rs.getDouble("priceEach");
int orderLineNumber=rs.getInt("orderLineNumber");

OrderDetails temp=new OrderDetails(orderNumber, productCode, quantityOrdered, priceEach, orderLineNumber);
od.add(temp);

}

}
catch(SQLException e) {

System.out.println("SQL exception happened while retriving data, close connection");

throw new RuntimeException(e);
}
return od;
}

我试图循环遍历 ArrayList 并输出每个 checkNumber 的总值(value)(priceEach 乘以QuantityOrdered)。但如果我只是一个对象一个对象地循环遍历 ArrayList,那是行不通的。因为我只会在控制台上看到每个对象的总和,而不是每个 checkNumber。

ArrayList<OrderDetails>od= this.getOrders("orderdetails");
for(int i=0;i<=od.size();i++) {
System.out.println(od.get(i).getPriceEach()*od.get(i).getQuantityOrdered());

}

我期待类似的内容出现在控制台上(没有重复的 checkNumber)

CheckNumber 10100, total value: 8494.62 (if you add up the product between priceEach and quantityOrdered for the three tuples shown above earlier in my question is the rsult)

简而言之,有没有一种方法可以将具有重复属性的对象组合成一个?如果我的问题看起来很模糊并且您不知道问题到底是什么,我深表歉意。如果您尝试联系我并要求进一步说明,我们将不胜感激,有时很难描述过于具体的问题。

最佳答案

为什么不简单地在数据库中进行计算呢? SQL 是一种基于集合的语言,与 Java 中的迭代循环相比,它在此类操作中非常高效。

考虑以下聚合查询:

select orderNumber, sum(quantityOrdered * priceEach) totalValue
from mytable
group by orderNumber

这将为每个订单提供一条记录,以及所有相应行的总值。

关于java - 如何将具有重复属性的元组组合成一个元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61394110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com