listIterator

2 respostas
C

Alguém pode me ajudar a pegar o proximo objeto de uma lista??
Tentei o seguinte…

mp = (meuPet) pets.listIterator(pets.indexOf(mp)).next();

mas não deu, ele pegou o atual objeto e não o próximo…

2 Respostas

Mantu

Olá, Claudete!
Um iterador não é apropriado para se recuperar um elemento específico em uma lista. Para isso, a própria lista costuma ter métodos próprios para recuperar um elemento específico.
Tente fazer assim:

meuPet nextMp;
int mpIndex = pets.indexOf(mp);
if(mpIndex >= 0 && mpIndex < pets.size() - 1)
    nextMp = pets.get(mpIndex + 1);
else //Não há um próximo elemento
    nextMp = null;

Mas eu estou curioso quanto a necessidade de toda essa operação… Você poderia por gentileza postar o código da classe meuPet (Aliás, é uma boa prática de programação em Java iniciar o nome das classes com letra maiúscula)?

C

Valeu!! Funcionou... Brigadão!!! :D

Mas não entendi pq minha classe começa com letra maiúscula... o nome dela é meuPet... 'm' minúsculo... bom, mas aí vai seu código... é só pra teste, pra ver como funciona o hibernate annotations... pra ver qual o melhor framework... estudei um pouco o hibernate, mas pra fugir dos arquivos xml q ele necessita, então estudei o annotations, depois vou estudar outros... se vc tiver alguma opinião, gostaria de ouvir...

Na minha aplicação, tens uns botão pra ir pro próximo e pro anterior... por isso precisava procurar o próximo...

package meuTeste;

import java.io.Serializable;
//import javax.persistence.Entity;
//import javax.persistence.GeneratedValue;
//import javax.persistence.GenerationType;
//import javax.persistence.Id;
import javax.persistence.*;
          

@Entity
@Table(name="pet")//, uniqueConstraints = {@UniqueConstraint(columnNames={"nome", "dono","sexo"})})
public class meuPet implements Serializable {

    @Id 
    @Column(name="codigo")
    private Long id;
    
    private String Nome;
    private String dono;
    private char sexo;
    
    /** Creates a new instance of meuPet */
    public meuPet() {
    }

    /**
     * Define o id deste meuPet.
     * @return o id
     */
    public Long getId() {
        return this.id;
    }

    /**
     * Define o id deste meuPet para o valor especificado.
     * @param id o novo id
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * Retorna um valor de código hash para o objeto.  Esta implementação computa
     * um valor de código hash baseado nos campos id deste objeto.
     * @return um valor de código hash para este objeto.
     */
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (this.id != null ? this.id.hashCode() : 0);
        return hash;
    }

    /**
     * Determina se outro objeto é igual a este meuPet.  O resultado é
     * <code>true</code> se e somente se o argumento não for nulo e for um objeto meuPet o qual
     * tem o mesmo valor para o campo id como este objeto.
     * @param object o objeto de referência com o qual comparar
     * @return <code>true</code> se este objeto é o mesmo como o argumento;
     * <code>false</code> caso contrário.
     */
    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof meuPet)) {
            return false;
        }
        meuPet other = (meuPet)object;
        if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) return false;
        return true;
    }

    /**
     * Retorna uma representação literal deste objeto.  Esta implementação cria
     * uma representação baseada nos campos id.
     * @return uma representação literal deste objeto.
     */
    @Override
    public String toString() {
        return "meuTeste.meuPet[id=" + id + "]";
    }
    
    
    public void setNome(String nm){
        Nome = nm;
    }
    
    public String getNome(){
        return Nome;
    }
    
    public void setDono(String d){
        dono = d;
    }
    
    public String getDono(){
        return dono;
    }
    
    public void setSexo(char s){
        sexo = s;
    }
    
    public char getSexo(){
        return sexo;
    }
}
Criado 2 de abril de 2007
Ultima resposta 2 de abr. de 2007
Respostas 2
Participantes 2