删除内容并显示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
方法为您Branch
和Player
类,这是微不足道的:
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;
当然,如果分支是由团队暗示你只是从分支删除它,因为有球员和球队之间没有直接关联。