0

すべてのユーザーについて、そのユーザーに対応する名前をフェッチしています。フェッチされた名前ごとに、対応する がありますList

以下のスタンドアロン プログラムを使用してサンプルを複製しようとしました。

package com;

import java.util.ArrayList;
import java.util.List;

public class Test {

    public static void main(String args[]) {
        List<String> users = new ArrayList<String>();
        users.add("user101");
        users.add("adminuser");

        for (String user : users) {
            try {
                ArrayList<String> namesCorrespondingtoUser = getNamesCorrespondingtoUser(user);
                for (String Id : namesCorrespondingtoUser) {

                    List<String> Items = getItemsCorrespondingtoId(user, Id);

                    filter(Items, user);
                }
            } catch (Exception e) {
            }
        }
    }

    public static ArrayList<String> getNamesCorrespondingtoUser(String userName)
            throws Exception {
        ArrayList<String> names = new ArrayList<String>();
        if (userName.equals("user101")) {
            names.add("UBSC1");
            names.add("HDBG1");
            names.add("GHYU1");
        }
        if (userName.equals("adminuser")) {
            names.add("UBSC1");
            names.add("HDBG1");
            names.add("GHYU1");
        }
        return names;

    }

    public static List<String> getItemsCorrespondingtoId(String userName,
            String Id) throws Exception {

        return null;
    }

    private static void filter(List<String> Items, String user) {

    }

}

forループの中にforループが入っているので心配です。

これが何らかの方法で改善できるかどうか教えてください。

4

3 に答える 3

1

ユーザー名と対応する ID をハードコードするのではなく、データベース テーブルに格納することをお勧めしますが、それ以外は問題ないように見えます。

于 2013-07-09T11:07:26.763 に答える
0

まず第一に、他の人が述べたように、二重ループ自体は問題ではないようです。速度のためにメモリの使用をトレードオフする別のアプローチがあります。1 つは、あたかもデータベースを扱っているかのように表形式の表現を使用し、表の「行」を循環するループ用に 1 つだけ記述することです。main()メソッドを次のように書き換えます。

public static void main(String args[]) {
    List<String[]> users = new ArrayList<String[]>();
    users.add(new String[]{"user101", "UBSC1"});
    users.add(new String[]{"user101", "HDBG1"});
    users.add(new String[]{"user101", "GHYU1"});
    users.add(new String[]{"adminuser", "UBSC1"});
    users.add(new String[]{"adminuser", "HDBG1"});
    users.add(new String[]{"adminuser", "GHYU1"});

    for (String[] user : users) {
        try {
                List<String> Items = getItemsCorrespondingtoId(user[0], user[1]);

                filter(Items, user[0]);
        } catch (Exception e) {
        }
    }
}
于 2013-07-09T11:45:22.060 に答える