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

要するに、行を好きなように再配置したい。特定の1つの値に基づいて結果セットデータを配置する方法。ガイドしてください。

4

4 に答える 4

2

ここでは、次の2つのレベルで行動できます。

  • データベースレベル
  • Javaレベル

データベースレベルでは、返される結果の順序を操作する唯一の方法は、SQLクエリで「ORDERBYASC/DESC」を使用することです。データベースから順序付けられた結果を取得するために他の方法に依存することはできないことに注意してください。

Javaレベルでは、次のようにオブジェクトを格納できます。-ソート可能なコレクションを使用します。アクションフォームを比較可能にするか、必要に応じて要素を並べ替えることができるコンパレータを実装します。次に、このメソッドを使用して、独自の基準で順序付けられたコレクションを取得できます。

ArrayListの代わりにTreeSetを使用することも検討できます。このデータ構造を使用すると、データを追加するだけで、事前に定義したコンパレータを指定すると、常にソートされます。ただし、加算には対数の複雑さが伴うため、決定するのはあなた次第です。

お役に立てれば

于 2012-09-24T05:45:10.763 に答える
0

ORDER BYSQLクエリで句を使用するかCollections.sort()Listを使用しComparator<afRealTimeInssuance>ます。前者の方が簡単でデータベースに負荷がかかり、後者は外部情報に基づいて並べ替えることができるため、より用途が広くなります。

ちなみに、クラスには、の代わりにJavaの規則を使用して名前を付ける必要があります。AFRealTimeInssuanceafRealTimeInssuance

于 2012-09-24T05:29:45.497 に答える
0

ResultSetを手動で再配置することはできません(SQLを使用する場合のみ)。再配置できるのは、オブジェクトを保持するデータ構造です。

行オブジェクトのArrayListを使用して、各行を目的の位置に挿入できます。

あなたの例で、whileループで次のようにしましょう。

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

これを行うには2つの方法があります。1つは、ORDER BY句を使用して結果を整理するように、クエリを変更できます。次に、コンパレータインターフェイスを実装し、コンパレータクラスを定義し、Collection.sort(List list、Comparator c)を使用してデータを並べ替えることができます。

于 2012-09-24T06:20:27.800 に答える