【发布时间】:2012-10-18 14:02:12
【问题描述】:
所以我有一个在 2PC 上启动的应用程序。每个实例在服务器模式下启动一个 HSQLDB。
我正在尝试获得不同产品的销售额。
于是我查询了本地数据库,并用产品名称和销售数量填充了一个数组列表。
然后我在另一台 PC 上的另一个数据库上执行相同的查询。
对于 1 个产品,我有两行(每行对应一个数据库)。 在这里,结果是假的,但执行时间没问题。
为了解决这个问题,我做了以下事情:
ResultSet rs2 = state2.executeQuery(produitsQuery);
while (rs2.next()) {
for (int i = 0; i < produits.size(); i++) {
obj = ((Object[]) produits.get(i));
idpdt = (Integer) obj[1];
if (idpdt == rs2.getInt(1)) {
nb = (Integer) obj[3];
valo = (Double) obj[4];
nb += rs2.getDouble(4);
valo += rs2.getDouble(5);
produits.set(i, new Object[]{
rs2.getString("famille"),
rs2.getInt("id_pdt"),
rs2.getString("nom_pdt"),
nb,
valo,
s2.getString("sous_famille")});
k = 1;
}
}
if (k == 0)
produits.add(new Object[]{
rs2.getString("famille"),
rs2.getInt("id_pdt"),
rs2.getString("nom_pdt"),
rs2.getInt("nb"),
rs2.getDouble("valo"),
rs2.getString("sous_famille")});
}
结果很完美,但执行时间非常慢,这是个问题。我认为这是因为我在结果集的每一行循环了整个数组列表。
我可以使用哪些其他解决方案来缩短执行时间?
【问题讨论】:
-
使用地图,键是您要比较的字段。
-
`我认为这是因为我在结果集的每一行循环了整个数组列表。`是的,你是对的。
标签: java performance arraylist