删除内容并显示JAVA中的所有内容

问题描述:

我在这里与我的课程,我的软件差不多完成了后两件事,我将继续进行GUI开发。总之,这里是我的代码:删除内容并显示JAVA中的所有内容

public class Team 
{ 
    private String clubName; 
    private String preName; 
    private ArrayList<Branch> branches; 

    public Team(String clubName, String preName) 
    { 
     this.clubName = clubName; 
     this.preName = preName; 
     branches = new ArrayList<Branch>(); 
    } 

    public Team() { 
     // TODO Auto-generated constructor stub 
    } 

    public String getClubName() { return clubName; } 
    public String getPreName() { return preName; } 
    public ArrayList<Branch> getBranches() { branches = new ArrayList<Branch>(branches);return branches; } 

    public void setClubName(String clubName) { this.clubName = clubName; } 
    public void setPreName(String preName) { this.preName = preName; } 
    public void setBranches(ArrayList<Branch> branches) { this.branches = new ArrayList<Branch>(branches); } 
} 

public class Branch 
{ 
    public ArrayList<Player> players = new ArrayList<Player>(); 
    String brName; 
    public Branch() {} 
    public void setBr(String brName){this.brName = brName;} 
    public String getBr(){return brName;} 
    public ArrayList<Player> getPlayers() {players =new ArrayList<Player>(players); return players; } 
    public void setPlayers(ArrayList<Player> players) { this.players =new ArrayList<Player>(players); } 
    public String toString() { 
     return "Branches [" + brName + "]";} 
} 
public class Player 
{ 
    private String name; 
    private String pos; 
    private Integer salary; 
    private Integer number; 

    public Player(String name, String pos, Integer salary, Integer number) 
    { 
     this.name = name; 
     this.pos = pos; 
     this.salary = salary; 
     this.number = number; 
    } 

    public Player(){} 

    public String getName() { return name; } 
    public String getPos() { return pos; } 
    public Integer getSalary() { return salary; } 
    public Integer getNumber() { return number; } 

    public void setName(String name) { this.name = name; } 
    public void setPos(String pos) { this.pos = pos; } 
    public void setSalary(Integer salary) { this.salary = salary; } 
    public void setNumber(Integer number) { this.number = number; } 
    public String toString() { 
     return "Player [name=" + name + ", number=" + number + ", pos=" + pos 
       + ", salary=" + salary + "]"; 
    } 

} 

//TEST 

String p1,p2; 
      int a1,a2; 
      String t, br; 
      System.out.print("Enter player name : "); 
      p1 = input.readLine(); 
      System.out.print("Enter player position : "); 
      p2 = input.readLine(); 
      System.out.print("Enter player salary : "); 
      a1 = Integer.parseInt(input.readLine()); 
      System.out.print("Enter player number : "); 
      a2 = Integer.parseInt(input.readLine()); 

       players[pCount].setName(p1); 
       players[pCount].setPos(p2); 
       players[pCount].setSalary(a1); 
       players[pCount].setNumber(a2); 
       ptmp.add(players[pCount]); 
       pCount++; 

      System.out.print("Enter the branch of player : "); 
      br = input.readLine(); 
      int fff=0; 

      for(int i = 0; i<brCount;i++) 
      { 
       if(br.equals(myBranch[i].brName)==true){ 
        myBranch[i].setPlayers(ptmp);fff=i;} 
      } 

第一个问题:我想玩家加入到我的系统。当玩家加入时,我可以轻松地将它添加到Branch类并连接它们。但是我不能为球员俱乐部做。我的意思是我想显示哪个球员在哪个俱乐部中踢球。但我做不到。

我的第二个问题:删除玩家也是问题。当我删除播放器时,应该将其全部删除。但无法想象出来。

在测试中,您可以看到我尝试过的显示功能。它适用于分支播放器。我也想添加团队连接。团队分支机构应该连接。

问题1:这取决于您想如何有效地进行搜索..现在,由于您不存储引用,您必须首先搜索哪个分支是您的玩家,然后搜索哪个俱乐部包含您的科。

具有良好的equals方法为您BranchPlayer类,这是微不足道的:

for (Team t : teamList) 
{ 
    if (t.branches.contains(player)) 
    return true; 
} 

return false; 

但是这不会是有效的,因为你将有一个O(N * M)复杂,其中ñ是团队规模和是平均分支规模。

如果你想要的东西更有效,我建议您存储类中的反向引用,你可以有你Player类两个属性

Branch currentBranch 
Team currentTeam 

,你可以设置他们,而你的播放器添加到分支/队。

否则,您可以保留一个单独的HashMap,将每个玩家都映射到他的分支/团队。内存使用效率较低,但非常简单。第二季度:要从他的分支/团队中删除Player,您只需知道他留在哪一个中(使用第一季度的答案),然后在从players中删除之前,您只需将其从相应的分支/团队中删除:

Branch b = findWhichBranch(player); 
Team t = findWhichTeam(player); 

b.remove(player); 
t.remove(player); 

players[index] = null; 

当然,如果分支是由团队暗示你只是从分支删除它,因为有球员和球队之间没有直接关联。