通常、提案されたモデルの妥当性に疑問を呈することはありませんが、...チームが反対ではなく多くのプレーヤーを抱えているチームであるということは意味がありませんか?
とにかく、別のプレーヤー名で再び登場するチームがプレーヤー名を変更できないと仮定すると、次のようになります。
BufferedReader input = ...;
Map<String,Player> playersByName = new HashMap<String,Player>();
String line;
while ((line = input.readLine()) != null) {
String playerName;
String teamName;
// code to parse the player and team names from 'line' comes here.
Player player = playersByName.get(playerName);
if (player == null)
playersByName.put(playerName,player = new Player(playerName));
Team team = new Team(teamName);
if (!player.getTeams().contains(team))
player.getTeams().add(team);
}
このコードは、Playerコンストラクターがチームの空のリストを作成することを前提としています。
上記はリストを使用してプレーヤーのチームを保持することで機能しますがSet
、プレーヤーが持つチームの数が非常に多い場合は、効率を上げるために代わりに使用することをお勧めします。その場合、最後の条件は必要ありません。直接追加できます。
List
または実装を完全に非表示Set
にし、Playerクラス内でチームリストを安全に操作するための操作を追加すると、さらに効果的です。
(ハッシュされた)ソリューション(非表示または公開)を使用する場合は、クラス内の関数と関数を適切にSet
オーバーライドする必要があることを忘れないでください(名前を委任すると非常にうまくいきます)。equals
hashCode
Team