0

私は2つのリストを持っています。List AおよびList B

リストAの各要素には、からの要素のリストがありますList B。2つのリストを作成しましたが、リストAの要素内のリストの作成はまだ行われていません。

どちらにも、リンクを行うことができるプロパティがあります。いう

リストBの要素。リストAの要素のIDとしてフィールドがある場合1、リストAのその要素に追加されます。

現在、別のforループ内でforループを使用して実行しています。このような何か

for(each A)
{
for(each B)
{
if(fieldsmatch)
{
add B to the List of the element from A
}
}

リストAのすべての要素をハッシュしてから、リストBの各要素を調べながらルックアップを実行するとよいでしょうか。

ありがとう。

これにHashMapを使用できますか?

4

1 に答える 1

1

論理を逆にします。各IDをそのIDを持つ要素のリストにマップするBからハッシュマップを作成します。次に、Aの各要素について、IDでリストを検索し、それをA要素のフィールドに割り当てます。

Map<IdType, List<B>> map = new HashMap<IdType, List<B>>();
for(each b in B) {
    List<B> list = map.get(b.id);
    if (list == null) {
        list = new ArrayList<B>();
        map.put(b.id, list);
    }
    list.add(b);
}
for(each a in A) {
    a.b_list = map.get(a.id);
    // if you need an empty list instead of null:
    if (a.b_list == null) {
        a.b_list = new ArrayList<B>();
    }
}
于 2012-08-02T04:35:48.393 に答える