私は問題があります。まず、私はあなたに私が比較できるようにしたい豆の構造を示してみましょう:それぞれ2つの豆に応じて複数のプロパティを持つ豆を比較する
ItemDTO含まれています
- 名
- ITEMID
- タイプ
- サブタイプ
- ボディ部
- 価格
ItemOnCharacterDTOが含まれています:
- OWNERID
- ITEMID
- 数
- 場所
ItemDTOは、XMLファイルから静的に読まです。何千もの人たちが変わりません(少なくとも現時点では気にしません)。 ItemOnCharacterDTOsはです。 ownerID、itemID、countおよびlocationは文字ごとに異なるため、データベースに保存されます。ここのitemIDは有効なItemDTOに対応しています。
私は、複数の条件で並べ替えるItemOnCharacterDTOオブジェクトの配列(またはArrayList)を持っています。 「itemOnCharacterDTO.ownerID」、「itemDTO.name」、「itemDTO.type」である。
ItemDTOとItemOnCharacterDTOを1つのクラス(ItemAllDTOなど)にまとめると、簡単にapache BeanComparatorを使用できます。しかし、私はそうではありません。 理由は次のとおりです。ユーザーは異なる文字に複数の項目を含めることができます。基本的な項目データ(ItemDTOデータ)は同じであり、ユーザ固有のデータ(ItemOnCharacterDTOデータ)は変更される。したがって、私は前者を一度だけロードし、別のItemOnCharacterDTOに出会うたびにユーザー固有のデータをロードします。
私はGWTにすべてを書いているので、サーバー上で並べ替えることにしました。なぜなら、すべての情報は(フロントエンドとは異なり、アイテム関連の情報がページネーションで読み込まれるのとは対照的です)。私はサーバー側でJavaを使用しています。アイテム関連のXMLファイルから静的なXMLデータを適切に取得するためのマッパーを作成しました。しかし、文字ベースのアイテム関連の情報は、mysqlデータベースに保存されています。私はItemOnCharacterDTO-またはItemDTOオブジェクトのいずれかに存在する属性によってItemOnCharacterDTOsの配列やArrayListのを並べ替えることができるようにしたい
(私は特定の属性DTOに属するものを区別するための方法を持っている - の意味:私はかどうかを知りますユーザーは "count"でソートしますが、ItemDTOオブジェクトではなく、この属性に対してItemOnCharacterDTOオブジェクトをチェックする必要があります)。
各ユーザーには数千個のオブジェクトが含まれている可能性があります。各ItemOnCharacterDTOには約5つの属性がありますが、各ItemDTOには約25程度の属性があります。したがって、それらを1つのオブジェクトに結合することは、たとえ比較目的のためだけであっても、非常に遅くてメモリを消費するため、実際の選択肢ではありません。
誰かがより良いアプローチをしていますか?私はどんな助けもありがたいです。たとえ生のアイデアをあげたとしても。私はそれを解決します。
ありがとうございます!あなたの助けが大変ありがとう!
イゴール。
P.s .:ご不明な点がございましたら、お気軽にお問い合わせください。できるだけ早く返信いたします。 P.s.2:Java用に "LINQ"のようなものがありますか?多分私の問題を解決するのに役立つでしょうか?
私はJXPathがあることを知りました。オブジェクトを照会できるのはJXPathです。 2つの豆に基づいて比較する方法がありますか? – Igor