1

オブジェクトの ArrayList が 2 つあります。オブジェクトmodelListを含むModelものと、オブジェクトentityListを含むEntityものです。Modelとオブジェクトの両方にEntityというプロパティがありますid

私の目標は、各Modelinをループし、同じ値のinmodelListがある場合は、 method を呼び出すことです。EntityentityListidmerge()

現在、私はこれをやっています:

for (Model model : modelList) {
    for (Entity entity : entityList) {
        if (model.getId().equals(entity.getId())) merge(entity, model);
    }
}

これは、特に大規模なデータセットではあまり効率的ではないようです。望ましい結果を達成するためのより良い方法は何でしょうか?

前もって感謝します!

4

3 に答える 3

0

ルネの答えに基づいて、私はこれに行きました:

Map<String, Model> modelMap = new HashMap<String, Model>();
for (Model model : modelList)
    if (!modelMap.containsKey(model.getKey())) modelMap.put(model.getKey(), model);

Iterator it = entityList.iterator();
while (it.hasNext()) {
    Entity entity = (Entity) it.next();
    String key = entity.getKey();
    if (modelMap.containsKey(key)) merge(entity, modelMap.get(key));
    else it.remove();
}

改善された回答をまだ開いています...

于 2013-10-28T18:45:45.213 に答える