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
简而言之,我想根据需要重新排列行。如何根据一个特定值排列结果集数据。请指导
答案 0 :(得分:2)
你可以在这两个级别:
在数据库级别,操作返回结果顺序的唯一方法是在sql查询中使用“ORDER BY ASC / DESC”。请注意,您不能依赖任何其他方式从数据库中获取有序结果。
在java级别,您可以像这样存储对象: - 使用可排序的集合。使您的行动形式具有可比性或实施比较器 允许按您的意愿对元素进行排序。 然后,您可以使用This method按照自己的标准获取有序集合。
您也可以考虑使用TreeSet而不是ArrayList 这种数据结构允许您只添加数据并给出您事先定义的比较器,它将始终排序。虽然添加具有对数复杂度,因此由您决定。
希望这有帮助
答案 1 :(得分:0)
在SQL查询中使用ORDER BY
子句,或使用Collections.sort()
List
Comparator<afRealTimeInssuance>
。前者更容易,并且负载在数据库上,后者更加通用,因为您可以根据外部信息进行排序。
另外,您应该使用Java conventions:AFRealTimeInssuance
代替afRealTimeInssuance
为您的课程命名。
答案 2 :(得分:0)
无法手动重新排列ResultSet(仅限sql)。您可以重新排列的是您持有对象的数据结构
您可以使用行对象的ArrayList,并在您希望的位置中插入每一行。
让我们在你的例子中说,在while循环中:
userProcessedCountCol.add(index, element);
答案 3 :(得分:0)
有两种方法可以做到这一点。您可以修改查询以使用ORDER BY子句来排列结果。其次,您可以实现Comparator接口并定义比较器类,并使用Collection.sort(List list,Comparator c)来对数据进行排序。