2013-09-09 2 views
0

У меня возникла проблема в упражнении. Упражнение касается команд. Пользователь должен указать имя и возраст спортсмена, имя и дом команды и название этого вида спорта. когда пользователь нажимает кнопку «создать спортсмена», Joptionpane.inputdialog выходит, чтобы спросить, в какой команде он хочет разместить спортсмена.Как проверить, содержит ли массив значение, заданное из inputdialog

Моя проблема заключается в том, как проверить, существует ли команда в командах arraylist, и как разместить спортсмена в этой команде.

if(e.getSource() == createAthlete){ 

    String nameA = athleteName.getText(); 

    Athlete A = new Athlete(nameA,Integer.parseInt(athleteAge.getText())); 
    String team= JOptionPane.showInputDialog("In what team do you want to place the athlete?); 
} 


public class Championship { 

    private String name; 
    private int durationMonths; 
    private static ArrayList<Championship> cship = new ArrayList<Championship>(); 
    private static ArrayList<Club> clubs = new ArrayList<Club>(); 

    public Championship(String name, int durationMonths){ 
     this.name = name; 
     this.durationMonths = durationMonths; 

    } 

    public static void addChampioship(Championship c){ 
     cship.add(c); 
    } 

    public static void addClub(Club club){ 
     clubs.add(club); 
    } 
} 

Это весьма актуальное, так что спасибо заранее за ваши ответы

+4

_It довольно срочно, это не улучшит время отклика в малейшем – Reimeus

+0

. [Документы ArrayList] (http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html) - это хорошее место для start, в частности, 'ArrayList # содержит (Object o)'. – ajp15243

+0

Моя ошибка, его первый раз, когда я что-то публикую здесь. Благодарю вас в любом случае –

ответ

1

clubs.contains(club) возвращается true, если клуб уже есть или false иначе.

Вам просто нужно реализовать equals() для вашего объекта данных (Club, Championship и т. Д.).

Однако, если вам нужно uniquness, почему бы просто не использовать набор вместо списка?

private static Collection<Club> clubs = new HashSet<Club>();

В этом случае, даже если добавить один и тот же клуб дважды только один экземпляр будет представлять. Но в этом случае вы должны дополнительно реализовать hashCode() для ваших объектов данных.

BTW обратите внимание на тип, который я использовал. Вы писали ArrayList (то есть конкретный класс в левой половине задания. Я написал интерфейс Collection, которые позволяют мне возможность легко изменять cocrete реализацию (ArrayList, LinkedList, HashSet, TreeSet, LinkedHashSetи т.д.), не затрагивая другой код.

+0

Важное замечание, которое ей должно быть известно - 'Hash Set' не поддерживает порядок вставки. Если она заботится о порядке, она должна использовать 'private static Collection clubs = new LinkedHashSet ();'. +1 – StormeHawke

+0

На самом деле я не знаком с HashSet, поэтому попробую equals(). Чем вы очень хотите для быстрого реагирования –

Смежные вопросы