0

メソッドに i/p パラメータとしていくつかのテーブル名が付けられています。creationDate(日付)を取得し、各テーブルをカウントして、統合されたリストに入れる必要があります)

次に、作成日に従ってリストを並べ替えます。

メソッドは次のとおりです。

public String getData(List tablename){
    Lifecycle.beginCall();
    EntityManager mgr = (EntityManager) Component.getInstance("entityManager");
    List data = new ArrayList();
    if (!tablename.isEmpty())
    {
        Iterator itr = tablename.iterator();
        while(itr.hasNext())
        {
            String element = itr.next().toString();
            Query q = mgr.createQuery("select to_date(s.creationDate), count(s)" +
                                      " from " + element + " s" +
                                      " group by to_date(creationDate)" +
                                      " order by to_date(creationDate)");
            List dataTemp = q.getResultList();

            data.addAll(dataTemp);

        }
    }
}

今、私はリストデータを持っています、例えば:

({["Jan 3, 2013 12:00:00 AM",10],
  ["Feb 3, 2013 12:00:00 AM",10],
  ["Jan 1, 2013 12:00:00 AM",10],
  ..........})

ここでの課題は、このリストを日付に従ってソートすることです

4

3 に答える 3

1

Collections.sort()を見てください。を実装するクラスを作成し、Comparator<Date>ソートするリストとともに提供するだけです。

さらに良いことに、Date は既に Comparable であるため、呼び出すだけCollections.sort(data)で昇順でソートされます。

編集: よく調べてみると、リスト ( data) には Date オブジェクトが含まれていません。実際には、各要素がサイズ 2 のオブジェクト配列であるリストです。配列の 1 番目の項目はテーブルの作成日で、2 番目は行数です。したがって、次のように並べ替える必要があります。

Collections.sort(data, new Comparator<Object> {
    @Override
    public int compare(Object o1, Object o2) {
        Object[] a1 = (Object[]) o1;
        Object[] a2 = (Object[]) o2;
        Date d1 = (Date) a1[0];
        Date d2 = (Date) a2[0];
        return d1.compareTo(d2);
    }
});
于 2013-02-23T14:42:11.510 に答える
0

ご覧のとおり、いくつかのテーブルから選択します。UNION1 つのクエリですべてのレコードを選択するために使用する 1 つの SQL クエリを作成できます。これは非常によく似たクエリです: SQL クエリ - UNION での Order By の使用

于 2013-02-23T14:52:15.227 に答える
0

最も簡単な方法は、DB レベルでソートを行うことです。

クエリを次のように変更します

       Query q = mgr.createQuery("select to_date(s.creationDate), count(s)" +
                                  " from " + element + " s" +
                                  " group by to_date(creationDate)" +
                                  " order by creationDate asc");
于 2013-02-23T14:49:25.453 に答える