Удалить в Java?

1

Я делаю проект, и у меня есть некоторые проблемы. Я получил класс Flight следующим образом:

public class Flight implements Cloneable { 
   private String idFlight;
   private Horaire hourFlight;
   private String city;
   private static Vector<Flight> flights = new Vector<Flight>();
   private Hashtable<Integer,Task> tasks = new Hashtable<Integer,Task>();
   private Plane thePlane;
   ...

и у меня есть статический метод "cancelFlight", как это:

public static void cancelFlight(String idFlight){
    Flight v=getFlight(idFlight);
    Iterator<Task> it = v.tasks.values().iterator();
    while(it.hasNext)
    {
       it.remove();
    }
    int index=flights.indexOf(v);
    flights.remove(index);

Но задачи также находятся в Hashtable другого класса Worker.

 private Hashtable<Integer,Task> tasks = new Hashtable <Integer,Task>();

Так что я могу сделать? Есть ли способ, который может удалить экземпляр класса? Другое решение, которое у меня есть, - это создать метод в классе Worker "removeFromTask (int idTask)", но это так сложно... :(

Теги:
hashtable

1 ответ

-1

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

  • 1
    В той степени, в которой я могу иметь хоть какой-то смысл в том, что ты сказал, это неправильно.
  • 0
    Нет, ты не прав Hot Licks. Как я уже сказал в своем ответе, если вы удалите какой-либо объект из hashmap и у вас есть ссылка на этот hashmap в другом поле, он также будет там удален. Попробуйте это: Map <String, File> filesMap = new HashMap <String, File> (); Карта <String, File> referenced = filesMap; filesMap.put («что-то», новый файл («/ dev / null»)); filesMap.remove ( "что-то"); System.out.println (filesMap); System.out.println (ссылка); Вы увидите, что после удаления чего-либо из файловых файлов эффекты также ссылаются на карту!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню