Excluir objeto de um List

ola pessoal…
estou tentando fazer o seguinte…

realizo uma consulta no bb e atribuo o resultado em uma Lista e apresento numa pagina jsp…
preciso fazer com que ao realizar uma alteração em um determinado objeto… esse objeto nao apareça mais na lista durante aquela sessão…

estou fazendo isso da seguinte forma…

[code]
public ActionForward update(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
ActionMessages errors = new ActionMessages();
try {
CompanyVo company = SessionUtils.getUser(request);
if (null == company) {
throw new BusinessException(“Sessão inválida. Efetue o login novamente”);
}

		PhonesVo phones = new PhonesVo();
		BeanUtils.copyProperties(phones, form);
		phones.setIdEmpresa(company.getId());
					
		int updatePhones = new Phones().getUpdate(phones);
		
		List phonesList = new Phones().getPhones(company.getId());
		
		phonesList.remove(phones);
		
		request.setAttribute("phonesList", phonesList);[/code]

o codigo acima… pega o conteudo do form e atribui ao objeto phones que ira realizar o update… logo em seguida realizo uma nova consulta… e removo da lista aquele objeto que veio do form…

pelo menos eh isso que estou tentanto fazer…

alguem poderia me ajudar???

obrigado

O código aparentemente está correto, mas para que o método remove funcione corretamente, você precisa sobrescrever os métodos equals() e hashCode() da classe PhonesVO identificando como ele deve comparar como sendo iguais.

voce poderia me dar mais detalhes sobre com sobrescrever estes metodos?
[]s

Olá

[quote=Humbertim2]voce poderia me dar mais detalhes sobre com sobrescrever estes metodos?
[]s[/quote]
http://www.javafree.org/javabb/viewtopic.jbb?t=6953

Prq nao um HashMap ao invés de um List?
Acho que vc ganharia facilidade em trabalhar com chaves por exemplo: a chave da sua HashMap seria o idCompany:

map.remove(new Integer(company.getId()))

pessoal nao estou conseguindo sobrescrever minha classe PhonesVo…

veja o que estou tentando fazer…

public boolean equals(Object vo) { if (vo instanceof PhonesVo) { if((vo.idEmpresa == this.idEmpresa) || (vo.nome == this.nome) || (vo.cpf == this.cpf)) { return true; } } else return false; }

esta apresentando o seguinte erro…

vo.idEmpresa não pode ser resolvido ou não é um campo
vo.nome não pode ser resolvido ou não é um campo
vo.cpf não pode ser resolvido ou não é um campo

minha classe phonesVo segue abaixo…

[code]
public class PhonesVo implements Serializable{

	private Long idEmpresa;
	private String nome;
	private String cpf;
	private String ddd_res;
	private String fone_res;
	private String ddd_cel;
	private String fone_cel;
	private String ddd_com;
	private String fone_com;
	private String ddd_outro;
	private String fone_outro;
	private boolean visible = true; 
	
	
	/**
	 * Construtor.
	 */
	public PhonesVo() {
		super();
	}

	/**
	 * Construtor.
	 * @param	id	ID
	 */
	public PhonesVo(Long id) {
		setIdEmpresa(id);
	}


	/**
	 * @return
	 */
	public String getDdd_cel() {
		return ddd_cel;
	}

	/**
	 * @return
	 */
	public String getDdd_com() {
		return ddd_com;
	}

	/**
	 * @return
	 */
	public String getDdd_outro() {
		return ddd_outro;
	}

	/**
	 * @return
	 */
	public String getDdd_res() {
		return ddd_res;
	}

	/**
	 * @return
	 */
	public String getFone_cel() {
		return fone_cel;
	}

	/**
	 * @return
	 */
	public String getFone_com() {
		return fone_com;
	}

	/**
	 * @return
	 */
	public String getFone_outro() {
		return fone_outro;
	}

	/**
	 * @return
	 */
	public String getFone_res() {
		return fone_res;
	}

	/**
	 * @return
	 */
	public Long getIdEmpresa() {
		return idEmpresa;
	}

	/**
	 * @return
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * @param string
	 */
	public void setDdd_cel(String string) {
		ddd_cel = string;
	}

	/**
	 * @param string
	 */
	public void setDdd_com(String string) {
		ddd_com = string;
	}

	/**
	 * @param string
	 */
	public void setDdd_outro(String string) {
		ddd_outro = string;
	}

	/**
	 * @param string
	 */
	public void setDdd_res(String string) {
		ddd_res = string;
	}

	/**
	 * @param string
	 */
	public void setFone_cel(String string) {
		fone_cel = string;
	}

	/**
	 * @param string
	 */
	public void setFone_com(String string) {
		fone_com = string;
	}

	/**
	 * @param string
	 */
	public void setFone_outro(String string) {
		fone_outro = string;
	}

	/**
	 * @param string
	 */
	public void setFone_res(String string) {
		fone_res = string;
	}

	/**
	 * @param long1
	 */
	public void setIdEmpresa(Long long1) {
		idEmpresa = long1;
	}

	/**
	 * @param string
	 */
	public void setNome(String string) {
		nome = string;
	}

	/**
	 * @return
	 */
	public String getCpf() {
		return cpf;
	}

	/**
	 * @param string
	 */
	public void setCpf(String string) {
		cpf = string;
	}

	/**
	 * @return
	 */
	public boolean isVisible() {
		return visible;
	}

	/**
	 * @param b
	 */
	public void setVisible(boolean b) {
		visible = b;
	}
	
	
	public boolean equals(Object vo) 
	{   
   		if (vo instanceof PhonesVo)
   		{
			if((vo.idEmpresa == this.idEmpresa) || (vo.nome  == this.nome) || (vo.cpf  == this.cpf))
			{
				return true;
			}	
   		}
   		else return false;        
	}   

}[/code]

estou com dificuldade em entender essa manipulação de listas…

Preciso obter um objeto do tipo PhonesVo em uma lista…e ao encontrar o objeto preciso setar o metodo setVisible para false…

por favor se alguem poder me ajudar…

Olá vc estava esquecendo de fazer um cast …
voce precisa dizer que o Object vo é do tipo PhonesVO…
como isso vc faz uma especialização do objeto.

public boolean equals(Object vo)   {
       boolen res = false;

        if (vo instanceof PhonesVo)  {   
               PhonesVO voP = (PhonesVO)vo;
               if( voP.idEmpresa.equals(this.idEmpresa) ) {   
                    res= true;   
              }     
        }   
         return res;
}  

Obs* eu pus como sendo igual somente os objetos que tiverem o idEmpresa iguail