Мне дали 4 класса Java
Teams.java
Team.java
Players.java
Player.java
Мне нужно иметь возможность создавать некоторых игроков и команды. И добавить игроков в команду. Я просто запутался, как мне добавить игроков в команды? Какой класс я должен использовать и как их добавить?
public class Teams {
public ArrayList<Team> teams;
public Teams(){ //take no parameters
}
public class Team {
private String name;
private Players players;
public Team(String name){
//takes one parameter, the name, corresponding to the fields identically named. Other fields require no parameters but the constructor methods
}
public class Players {
private ArrayList<Player> Players;
public Players(){ //takes no parameters
}
public class Player {
private String name;
private Double credit;
private String level;
private Integer age;
private String team;
private Integer No;
public Player(String name, Double credit, Integer age, Integer No){
this.name = name;
this.credit = credit;
this.age = age;
this.No = No;
this.level = CalculateLvl(credit);
}
я попытался добавить некоторых игроков в список игроков в классе Players, как это
public Players(){ //no parameters
Players.add(new Player("Kevin Hart", 1300.0, 20, 7));
}`
и некоторые команды в список Teams в классе Teams
public Teams(){ //take no parameters
teams.add(new Team("Knicks"));
}
Но я не уверен, что я делаю, или если это правильный путь. Я не могу понять, как я собираюсь связать этих игроков с их соответствующей командой.
Элементарная попытка без компилятора проверить. Большинство авторитетных учебных пособий показывают, что было бы... extends ArrayList-Team-
// Seems ok from some sources - public class Teams<Team> extends ArrayList
public class Teams extends ArrayList<Team>{
Team temp;
Players<Player> pls; // extends ArrayList
public Teams(){
pls = new Players<>();
pls.add(new Player("Ruhollah Khomeini",0.0000,17,88));
pls.add(new Player("Margaret Thatcher",0.0000,101,16));
pls.add(new Player("Joe Biden",-0.0000,3,45));
pls.add(new Player("Idi Amin",0.0000,25,44));
temp = new Team(pls);
add(temp);
}//end constuctor
}//end class
допустил небольшую ошибку на мгновение, фиксированная команда (единственное число)
нет, классы коллекций предназначены для использования (не для расширения)
Без его расширения в исходном коде требуется меньше классов, особенно с чем-то вроде команды, выполненной как вложенный подкласс. Каждому свое.
Я думаю, что это скорее вопрос дизайна, когда у нас есть игроки со своими атрибутами, которые принадлежат игрокам. Затем игроки распределяются по одной команде, где у нас может быть несколько команд.
@vishalpd, пожалуйста, проверьте приведенную ниже реализацию класса, сделанную мной, с основной информацией, которую вы предоставили. Также обратите внимание, что необходимо добавить дополнительные проверки, это всего лишь скелет.
Я использовал разные конструкторы в классах для создания экземпляров объектов по-разному.
Самое главное, конструктор java var args также создан для более элегантного способа добавления игроков и команд по одному.
Кроме того, списки List<Team> teams
и List<Player> players
использовались внутри классов Teams и Players для сохранения каждого игрока и команды.
Класс игрока
public class Player {
public Player(String name, Double credit, String level, Integer age, String team, Integer no) {
this.name = name;
this.credit = credit;
this.level = level;
this.age = age;
this.team = team;
this.no = no;
}
public Player() {
}
private String name;
private Double credit;
private String level;
private Integer age;
private String team;
private Integer no;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getCredit() {
return credit;
}
public void setCredit(Double credit) {
this.credit = credit;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getTeam() {
return team;
}
public void setTeam(String team) {
this.team = team;
}
public Integer getNo() {
return no;
}
public void setNo(Integer no) {
this.no = no;
}
@Override
public String toString() {
return "Player{" +
"name='" + name + '\'' +
", credit = " + credit +
", level='" + level + '\'' +
", age = " + age +
", team='" + team + '\'' +
", no = " + no +
'}';
}
}
Класс игроков
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Players {
private List<Player> players;
public Players(Player... players) {
this.players = new ArrayList<>();
Arrays.stream(players).forEach(player -> this.players.add(player));
}
public Players(List<Player> players) {
this.players = players;
}
public Players() {
this.players = new ArrayList<>();
}
public List<Player> getPlayers() {
return players;
}
public void setPlayers(List<Player> players) {
this.players = players;
}
public void addSinglePlayer(Player player) {
if (player != null) {
this.players.add(player);
}
}
public void addGroupOfPlayers(List<Player> players) {
if (!players.isEmpty()) {
players.forEach(player -> this.players.add(player)); //Java 8 style
}
}
}
Командный класс
команда открытого класса {
private int id;
private String name;
private Players players;
public Team( int id, String name, Players players) {
this.id = id;
this.name = name;
this.players = players;
}
public Players getPlayers() {
return players;
}
public void setPlayers(Players players) {
this.players = players;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Класс команд
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Teams {
private List<Team> teams;
public Teams(Team... teams) {
this.teams = new ArrayList<>();
Arrays.stream(teams).forEach(team -> this.teams.add(team));
}
public Teams(List<Team> teams) {
this.teams = teams;
}
public Teams() {
this.teams = new ArrayList<>();
}
public List<Team> getTeams() {
return teams;
}
public void setTeams(List<Team> teams) {
this.teams = teams;
}
public void addSingleTeam(Team team) {
if (team != null) {
this.teams.add(team);
}
}
public void addGroupOfTeams(List<Team> teams) {
if (!teams.isEmpty()) {
teams.forEach(team -> this.teams.add(team)); //Java 8 style
}
}
}
Код драйвера для проверки функциональности Основной класс
import java.util.List;
public class Main {
public static void main(String[] args) {
Player player1 = new Player("jhon", 23.0d, "expert", 34, "super hero", 123);
Player player2 = new Player("Rohan", 22.0d, "beginner", 28, "super hero", 124);
Player player3 = new Player("Arnold", 16.0d, "beginner", 36, "super hero", 125);
Player player4 = new Player("Mary", 18.0d, "beginner", 23, "gladiator", 807);
Player player5 = new Player("Kevin", 21.0d, "beginner", 27, "gladiator", 808);
Player player6 = new Player("Jemmy", 19.0d, "beginner", 33, "gladiator", 809);
Players playersTeam1 = new Players(player1, player2, player3);
Players playersTeam2 = new Players(player4, player5, player6);
Team team1 = new Team(1, "super hero", playersTeam1);
Team team2 = new Team(2, "gladiator", playersTeam2);
Teams teams = new Teams(team1, team2);
//Print Team 1
System.out.println("TEAM 1");
teams.getTeams().stream().filter(team -> team.getId() == 1).forEach(team -> {
team.getPlayers().getPlayers()
.stream()
.forEach(player -> System.out.println(player.toString()));
});
System.out.println();
//Print Team 1
System.out.println("TEAM 2");
teams.getTeams().stream().filter(team -> team.getId() == 2).forEach(team -> {
team.getPlayers().getPlayers()
.stream()
.forEach(player -> System.out.println(player.toString()));
});
}
}
Вывод результата
TEAM 1
Player{name='jhon', credit=23.0, level='expert', age=34, team='super hero', no=123}
Player{name='Rohan', credit=22.0, level='beginner', age=28, team='super hero', no=124}
Player{name='Arnold', credit=16.0, level='beginner', age=36, team='super hero', no=125}
TEAM 2
Player{name='Mary', credit=18.0, level='beginner', age=23, team='gladiator', no=807}
Player{name='Kevin', credit=21.0, level='beginner', age=27, team='gladiator', no=808}
Player{name='Jemmy', credit=19.0, level='beginner', age=33, team='gladiator', no=809}
Большое спасибо, приятель, для меня есть некоторые ограничения при изменении этих кодов. Но это помогло мне, я использовал кое-что отсюда и разместил в своем новом посте.
Добро пожаловать :) я видел ваш другой пост, на который я уже ответил
В одной команде (грамматика единственного числа) есть группа (множественное число) игроков. Команда не играет сама по себе, поэтому Команды (множественное число) представляет собой группу из нескольких наборов Команды. Так что на самом деле это должно быть «общедоступный класс Teams extends ArrayList<Team> и «общедоступный класс Players extends ArrayList<Player>». Я не использую его часто «общедоступный класс Teams<Team> extends ArrayList», забыл, что, компилятор покажет ошибку ., Teams<Team> или Players<Player> — это то, как тип переменной будет записан в классе для этих классов.Разумно уверен, что последнее, потому что разумно объявить «Players<Player> pls = new Players<>();»