-1

データベースにクエリを実行した後、次のような結果が得られます

VendorName | IncidentID | IncidentStatus | IncidentDate
-------------------------------------------------------
XYZ        | 100        |     Open       | 02-JUN-2011    
ABC        | 101        |     Closed     | 03-JUN-2011  
MNP        | 102        |     Open       | 01-JUN-2011  
LPQ        | 103        |     Open       | 01-APR-2011 

次のコードスニペットを使用してリストを繰り返しています

Iterator iter=resultList.iterator();
  while (iter.hasNext()) {
    Object[] result= (Object[]) iter.next();
    System.out.println("Vendor Name-->" +result[0]);
}

リストを繰り返しながら、Closed インシデントの行のみを返したいと考えています。これを行う方法 ?

新しいリストを定義し、これにオブジェクトを1つずつ追加することで実行できることは理解していますが、より良い方法はありますか?

4

4 に答える 4

0

まず、可能であれば、データベースにクエリを実行するときに制限を追加する方が良いようです。それ以外の場合は、Apache Commons Collection FilterIteratorを使用することをお勧めします

Predicate<Object[]> predicate = new Predicate<>() {
                   evaluate(Object[] obj) { 
                         return (obj[2].equals("Closed")); 
                   }
               };

Iterator<Object[]> filteredIterator = new FilterIterator<>(
                            resultList.iterator, 
                            predicate
                        );

このアプローチにより、任意のフィールドと値を使用して反復子またはコレクションをフィルター処理するのに役立つ汎用テーブル述語クラスを作成できます。

于 2013-06-20T23:57:54.900 に答える
0

結果セットをフィルタリングするのはなぜですか? ちょっと不要に思えます。クエリに「IncidentStatus == Closed」を追加してみませんか?

于 2013-06-20T23:45:18.190 に答える