アプリ版:「スタンプのみでお礼する」機能のリリースについて

質問1) ArrayListからHashMapの変換(処理要件は満たすが、より良い方法がないか)
質問2) より良い設計はどうするべきか
※ 長文です。すいません。
==
前提条件:
 工程) 保守フェーズ
 環境) 3階層のWebシステム(クライアント/AP/DB)、AP実行環境はJava(1.4)、DBはOracle(10g)
処理の目的:
 DBに存在するレコードの一覧を画面に表示する。
 ただし存在しないレコードはnull(空)表示する。

以下テーブルが存在します。
----------テーブルイメージ----------------
内部キー(ID)  表示順序   画面表示名 (以降のカラム省略)
----------------------------------------
1         1        AAAAAA
2         3        CCCCCC
3         5        DDDDDDD
----------------------------------------

画面表示は以下です。表示枠は5つ。その他の項目も存在する。
------------画面表示イメージ--------------
1: AAAAAA
2: (空)
3: CCCCCC
4: (空)
5: DDDDDDD
-----------------------------------------

現状:
DB参照は内製のORマッパを使用します。その内のひとつ、メソッドAは
上記テーブルを対象に3つのDTO(Data Transfer Object)を保持したArrayListを返却します。(orderは内部キー)
一方、画面表示ではkey=Valueでの取扱いが有利なため、HashMapで組んでいます。
このため、新たに構築したHashMapにArrayListの内容を順次展開しながら、Mapに
詰めなおすロジックが必要となっています。

(擬似コード)------
List list = ORマッパ.メソッドA();
Map map = new HashMap();

int order = 0;
int listIndex = 0;
DTO dto = null;
for (int i = 0; i < DISPLAY_MAX_COUNT; i++) {
  dto = (DTO)list.get(listIndex);
  order = dto.get表示順序();
  if (i == order) {
    map.put((String)i, dto); 
    listIndex++; 
  } else {
    map.put((String)i, null);
  }
}
(擬似コード)------

以上を踏まえ、質問いたします。

質問1)
ロジックに対するInput/Outputを変更しない前提で、
ArrayListからHashMapの変換でよりよい方法はないか。
質問2)
仮に設計や製造を一からやりなおすことができるとしたら、
より良い設計はどうするべきか。

長文申し訳ないです。最後まで目を通していただきありがとうございます。

A 回答 (1件)

1)Java詳しくないけど、このままでも良いのでは。


コードが読み切れないほどでもないですし。パフォーマンス的な問題を抱えてるか判断つかないので。
あえて書くと、自分ならこうかな→ http://www.ideone.com/vBbUi

2)もこれだけでは判断つかないような。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!