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);
}
其中 af实时发行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
简而言之,我想根据需要重新排列行。如何基于一个特定值排列结果集数据。请指导
在此处执行两个级别的操作:
- 数据库级别
- 爪哇级
数据库级别,操作要返回的结果顺序的唯一方法是在 sql 查询中使用"ORDER BY ASC/DESC"。请注意,您不能依赖任何其他方式从数据库中获取有序结果。
在 java 级别,您可以像这样存储对象: - 使用可排序的集合。使您的操作形式具有可比性或实现一个比较器允许根据需要对元素进行排序。然后,您可以使用此方法按自己的条件获取有序集合。
您也可以考虑使用 TreeSet 而不是 ArrayList此数据结构将允许您仅添加数据,并且给定您预先定义的比较器,它将始终进行排序。不过,加法具有对数复杂性,因此由您决定。
希望这有帮助
结果集不能手动重新排列(只能使用 sql)。您可以重新排列的是保存对象的数据结构
您可以使用行对象的数组列表,并将每一行插入所需的位置。
假设在您的示例中,在 while 循环中:
userProcessedCountCol.add(index, element);
有两种方法可以做到这一点。您可以修改查询以使用 ORDER BY 子句来排列结果。其次,您可以实现比较器接口并定义比较器类,并使用 Collection.sort(List list,Comparator c) 对数据进行排序。
要么在 SQL 查询中使用 ORDER BY
子句,要么使用 Comparator<afRealTimeInssuance>
Collections.sort()
List
。前者更容易,并将负载放在数据库上,后者更通用,因为您可以根据外部信息进行排序。
附带说明一下,您应该使用 Java 约定命名类:AFRealTimeInssuance
而不是 afRealTimeInssuance
。