0

Java で、あるリストのオブジェクトを別のリストのオブジェクトのメンバーに追加したいと考えています。追加するオブジェクトには、他のリスト内の一意の要素を識別するメンバーがあります。

そうする簡単な方法はありますか?

たとえば、艦隊を表すリストにすべての船員を自分の船に追加します。

class Sailor{
 Integer ship_id;
}

class Ship {
 Integer ship_id;
 List<Sailor> sailors;
}

List<Sailor> sailors;
List<Ship> fleet;
4

3 に答える 3

0

私が理解していることから、以下のようなものが必要です:

//Add every sailor to his ship in a list representing the fleet.
    public void addSailorToFleet(){
        for(Sailor sailor : sailors){
            for(Ship ship : fleet){
                if(sailor.ship_id == ship.ship_id){
                    ship.sailors.add(sailor);
                }
            }
        }
    }

これには O(n^2) の複雑さがあります。

Map を使用して参照を格納するもう 1 つのソリューション (pcalcao による) は、スペースと時間をトレードオフします。コンテキストに応じて、どちらかを選択できます。

Map を使用して参照を保存することのもう 1 つの欠点は、新しい船が追加されたときに常に Map を更新しておく必要があることです。

于 2013-04-08T11:52:43.543 に答える
0

艦隊を表すリストにすべての船員を自分の船に追加します。

これが何を意味するのかよくわかりませんが、equals と ahscode を正しくオーバーライドする場合 (一貫性、推移性、対称性、相対性)。その後、List.contains()を使用して、オブジェクトがリストにあるかどうかを確認できます。

于 2013-04-08T11:45:43.077 に答える