通常我不會質疑提出的模型的有效性,但...沒有更多的意義,團隊是那些有很多球員而不是相反?
總之,假設玩家名稱不能用一個不同的球員的名字再次出現一支球隊改變:
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);
}
的代碼假設玩家構造函數創建團隊的一個空列表。
雖然上面將使用列表來保存球員的球員我建議您使用Set
而不是效率,如果球員擁有的球隊數量可以相當大。在這種情況下,你不需要最後的條件,你可以直接添加。
如果完全隱藏List
或Set
實現並添加操作以在Player類中安全地操作團隊列表,則更好。
Remeber,如果你使用一個(散列)Set
溶液(隱藏或暴露的),你需要適當覆蓋equals
和hashCode
功能在Team
類(其中委託其名稱會工作得很好)。
只是維護一張>的地圖,並繼續添加對象。 –
我想用*創建*你實際上是指*實例化該類的一個對象......在這種情況下,你的意思是說玩家的名字可以改變嗎?在閱讀文件時可以更改嗎?例如。一個已經存在的球隊出現了不同的球員名字? –
Player中的名字是字符串嗎? –