如何重新排列java中的结果集数据行?

时间:2012-09-24 05:23:30

标签: java javabeans resultset

        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 个答案:

答案 0 :(得分:2)

你可以在这两个级别:

  • 数据库级别
  • Java级别

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

在java级别,您可以像这样存储对象:   - 使用可排序的集合。使您的行动形式具有可比性或实施比较器 允许按您的意愿对元素进行排序。 然后,您可以使用This method按照自己的标准获取有序集合。

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

希望这有帮助

答案 1 :(得分:0)

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

另外,您应该使用Java conventionsAFRealTimeInssuance代替afRealTimeInssuance为您的课程命名。

答案 2 :(得分:0)

无法手动重新排列ResultSet(仅限sql)。您可以重新排列的是您持有对象的数据结构

您可以使用行对象的ArrayList,并在您希望的位置中插入每一行。

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

userProcessedCountCol.add(index, element);

答案 3 :(得分:0)

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