2017-02-10 28 views
2

Я создал класс объекта «Пациент», содержащий имя и пол и имя пациента, и хочу удалить его на имя пациента. Каков правильный способ сделать это?Java remove Пользовательский объект из набора деревьев

Это мой пациент объект:

class Patient { 

    private String name; 
    private int gender; 

    public Patient(String name, int gender){ 
     this.name = name; 
     this.gender = gender; 
    } 

    public String getName(){ 
     return this.name; 
    } 

    public int getGender(){ 
     return this.gender; 
    } 

    public void setName(String name){ 
     this.name = name; 
    } 

    public void setGender(int gender){ 
     this.gender = gender; 
    } 

} 

Это моя TreeSet декларация: private TreeSet<Patient> ts = new TreeSet<Patient>(new nameComp());

Это мой метод удаления (я не знаю, как начать)

void RemovePatient(String patientName) { 

} 
+2

итерацию через TreeSet и найти один с именем, которое вы хотите. Затем вы просто удаляете элемент из набора. – Robert

+1

Создайте пациента с этим именем и удалите его (при условии, что плохо названный nameComp является компаратором, только сравнивающим имя пациентов). Методы начинаются с строчной буквы; классы начинаются с прописного. Вы делаете наоборот. Но у меня такое ощущение, что на самом деле вам нужна карта . –

+0

Hi JB Nizet, мое имяComp действительно мой компаратор, чтобы сортировать свое дерево в порядке возрастания по имени пациента. Моя функция «Пациент» работает правильно, но теперь я застрял с базой метода удаления по имени, указанному в параметре. – user7495150

ответ

1

Простое повторение и удаление при этом приведет к одновременному исключению модификации. Вы можете сохранить темп элемент, чтобы удалить и удалить его позже: Например:

void removePatient(String patientName) { 
    Person deleteThat; 
    for (Patient p : ts){ 
     if(p.getName().equals(patientName){ 
      deleteThat = p; 
     } 
    } 
    if(deleteThat != null){ 
     ts.remove(deleteThat); 
    } 
} 
+1

Не, если вы используете «Итератор» вручную (вместо цикла foreach) и вызываете его метод 'remove'. – Powerlord

+0

Это правда. По-прежнему предполагайте, что это решение проще. – danny

+0

Действительно, использование итераций вызывает одновременное исключение модификации. Благодаря Powerlord – user7495150

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

  • Нет связанных вопросов^_^