Метод arrayList.remove не работает в java - PullRequest
0 голосов
/ 13 июля 2020

Я пытаюсь создать приложение Swing в java, и у меня есть список, и я хочу найти объект в списке и хочу удалить переданный объект.

При нажатии кнопки обновления тогда это действие происходит в моем приложении SWING:

private void updateBtnActionPerformed(java.awt.event.ActionEvent evt) {                                          
        Branch b=new Branch(address.getText(),email.getText(),name.getText(),webadd.getText(),phonenum.getText());
        
        Secretary s=new Secretary(sec.getId(),username.getText(),
         password.getText(),b);
        System.out.println("id is"+sec.getId());
       boolean result=secDao.delete(sec);
       
       if(result){
            secDao.insert(s);
              JOptionPane.showMessageDialog(null,"Update Successful");
            fetch();
       }
       else{
             JOptionPane.showMessageDialog(null,"Cannot Update");
       }
            
    }    

Я создаю новый объект Secretary s и sec - это объект, который я получил из Jtable в разгаре.

Итак , поскольку я не использую какую-либо базу данных, которую я читаю и записываю в файл, мой старый объект sec необходимо удалить, а новый объект s нужно вставить.

Итак, в моем SecretDAOImpl . java class У меня есть функция удаления, работающая как:

  @Override
    public boolean delete(Secretary t) {
        System.out.print("Object passed is"+t);
         List<Secretary> secList=getAll();
//         List<Secretary> toBeRemoved=new ArrayList<>();
//         toBeRemoved.add(t);
//         secList.removeAll(toBeRemoved);
//         System.out.println("secList after remove is"+secList);
        for(int i=0;i<secList.size();i++){
            System.out.println("From delete me"+secList.indexOf(t));
        } 
         
//    for(int i=0;i<secList.size();i++){
//          Secretary s=secList.get(i);
//          if(s.getId()==t.getId()){
//              secList.remove(t);
//          }
//    }
         
         File file = new File(filename);
        if(file.delete()) 
        { 
            System.out.println("File deleted successfully");
            insertAgain(secList);
            return true;
        } 
        else
        { 
            System.out.println("Failed to delete the file"); 
        }
        return false;
    }

Я пробовал эту прокомментированную строку, но объект не удаляется из списка. Мой метод getAll(); возвращает мне Список:

 @Override
    public List<Secretary> getAll() {

try {
    FileInputStream file = new FileInputStream(filename);
    ObjectInputStream reader = new ObjectInputStream(file);
    List<Secretary> secList=new ArrayList<>();
    while (true) {
        try { 
            Secretary obj = (Secretary)reader.readObject();
            System.out.println(obj);
            secList.add(obj);
            
        } catch (Exception ex) {
            System.err.println("end of reader file ");
            break;
        }
    }
    System.out.println("secList is"+secList);
    file.close();
    reader.close();
    return secList;
} catch (Exception ex) {
    System.err.println("failed to read " + filename + ", "+ ex);
}
return null;
    }

Итак, в моей консоли я вижу:

id is2
Object passed isSecretary{id=2, userName=asdas, password=adad, branch=com.npsc.entity.Branch@5f8ea9f6}Secretary{id=2, userName=asdas, password=adad, branch=com.npsc.entity.Branch@305b8802}
secList is[Secretary{id=2, userName=asdas, password=adad, branch=com.npsc.entity.Branch@305b8802}]
From delete me-1
File deleted successfully
insert called
end of reader file 
end of reader file 
Secretary{id=2, userName=asdas, password=adad, branch=com.npsc.entity.Branch@47292e6d}
secList is[Secretary{id=2, userName=asdas, password=adad, branch=com.npsc.entity.Branch@47292e6d}]

Мой объект не удаляется из списка? Почему это происходит?

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