Удаление контента и отображение всего контента в JAVA - PullRequest
1 голос
/ 09 июня 2010

Я здесь с моими уроками, мое программное обеспечение почти готово после завершения двух последних вещей, которые я продолжу в разработке GUI.В любом случае, вот мой код:

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 и подключить их.Но я не могу сделать это для Клуба Игроков.Я хочу показать, какой игрок играет в каком клубе.Но я не могу этого сделать.

МОЙ ВТОРОЙ ВОПРОС: Удаление игрока также является проблемой.Когда я удаляю плеер, он должен быть удален везде.Но не мог понять это.

В тесте вы можете увидеть функцию дисплея, которую я пробовал.Он отлично работает для Branch-Player.И я хочу добавить Командное соединение тоже.Team-Branch-Player должен быть подключен.

1 Ответ

1 голос
/ 09 июня 2010

Q1: это зависит от того, насколько эффективно вы хотите выполнять поиск .. на данный момент, так как вы не сохраняете обратные ссылки, вы должны сначала найти, в какой ветви находится ваш игрок, а затем искать, в каком клубе есть ваша ветвь. .

С хорошим equals методом для ваших Branch и Player классов это тривиально:

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

return false;

Но это не будет эффективно, так как у вас будет сложность O (n * m) , где n - размер команды, а m - средний размер ветки.

Если вы хотите что-то более эффективное, я бы посоветовал вам хранить обратные ссылки внутри ваших классов, у вас может быть класс Player с двумя атрибутами

Branch currentBranch
Team currentTeam

и вы можете установить их, когда добавляете игрока в ветку / команду.

В противном случае вы можете оставить отдельный HashMap, который отображает каждого игрока в его ветку / команду. Меньше памяти, но довольно просто.

Q2: чтобы удалить Player из его ветви / команды, вам просто нужно знать, в каком из них он находится .. (используя ответ на вопрос Q1), затем перед удалением из players вы просто удалите его из соответствующего филиал / команда:

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

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

players[index] = null;

Конечно, если команда подразумевает ветвь, вы просто удалите ее из ветви, поскольку между игроком и командой нет прямой связи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...