0
        List userProcessedCountCol = new ArrayList();
                  while (iResultSet1.next()) {
                        afRealTimeIssuance afRealTimeIssuance = new afRealTimeIssuance();
                        Integer i = 0;

                        afRealTimeIssuance.setSub_channel(iResultSet1.getString(++i));
                        afRealTimeIssuance.setAgent_names(iResultSet1.getString(++i));
                        afRealTimeIssuance.setFtd(iResultSet1.getDouble(++i));
                        afRealTimeIssuance.setMtd(iResultSet1.getDouble(++i));
                        afRealTimeIssuance.setQtd(iResultSet1.getDouble(++i));

                        userProcessedCountCol.add(afRealTimeIssuance);
}

afRealTimeIssuance 在哪里 ActionForm

使用上面的代码片段,我得到如下输出

1             A             100
2             B             200
3             C             300
4             D             400

但我想将输出重新排列为

2            B              200
4            D              400
3            C              300
1            A              100

简而言之,我想根据需要重新排列行。如何根据一个特定值排列结果集数据。请指导

4

4 回答 4

2

您可以在此处充当两个级别:

  • 数据库级别
  • Java级别

在数据库级别,操作要返回的结果顺序的唯一方法是在 sql 查询中使用“ORDER BY ASC/DESC”。请注意,您不能依赖任何其他方式从数据库中获取有序结果。

在 java 级别,您可以像这样存储您的对象: - 使用可排序的集合。使您的操作表单具有可比性或实现一个比较器,允许您根据需要对元素进行排序。然后您可以使用此方法按您自己的标准获取有序集合。

您也可以考虑使用TreeSet而不是 ArrayList 这种数据结构将允许您只添加数据,并且给定您预先定义的比较器,它将始终进行排序。但是,加法具有对数复杂性,因此由您决定。

希望这可以帮助

于 2012-09-24T05:45:10.763 回答
0

有两种方法可以做到这一点。您可以修改查询以使用 ORDER BY 子句来排列结果。其次,您可以实现 Comparator 接口并定义比较器类并使用 Collection.sort(List list,Comparator c) 对数据进行排序。

于 2012-09-24T06:20:27.800 回答
0

ResultSet 不能手动重新排列(仅使用 sql)。您可以重新排列的是您保存对象的数据结构

您可以使用行对象的 ArrayList 并将每一行插入到您想要的位置。

让我们在你的例子中说,在while循环中:

userProcessedCountCol.add(index, element);
于 2012-09-24T05:44:18.500 回答
0

在 SQL 查询中使用ORDER BY子句,或者使用. 前者更容易并将负载放在数据库上,后者更通用,因为您可以根据外部信息进行排序。Collections.sort()ListComparator<afRealTimeInssuance>

附带说明一下,您应该使用Java 约定命名您的类:AFRealTimeInssuance而不是afRealTimeInssuance.

于 2012-09-24T05:29:45.497 回答