ArrayList urgente

6 respostas
J
import java.util.*;
 
public class OrdernarLista {
    
    public static void main(String[] args) {
    	
       Pessoa p1 = new Pessoa("jander",22,"masculino");
       Pessoa p2 = new Pessoa("jander",21,"masculino");
       Pessoa p3 = new Pessoa("jander",23,"masculino");
    
    
       List<Pessoa> lista = new ArrayList<Pessoa>();
       lista.add(p1);
       lista.add(p2); 
       lista.add(p3);
       
       System.out.println("Lista desordenada");
       
       imprimir(lista);
       
       Collections.sort(lista);
       
       System.out.println("Lista ordenada");
       imprimir(lista);
       
    }	
    	
    private static void imprimir(List<Pessoa> lista){

      for(Pessoa pessoa : lista){
      	
      	  System.out.println("Nome" + pessoa.nome);
      }
     
    }
    
}
public class Pessoa implements Comparable<Pessoa> {
	
	String nome;
	Integer idade;
	String sexo;
	
	public Pessoa(String nome, Integer idade, String sexo){
		this.nome = nome;
		this.idade = idade;
		this.sexo = sexo;
	}
	
	
	public int compareTO(Pessoa o){
		int valor = nome.compareTo(o.nome);
		return (valor != 0 ? valor : 1);
	}
	
}

Alguem sabe me diser pq está dando esse erro

--------------------Configuration: OrdernarLista - JDK version 1.6.0_02 - --------------------
C:\Documents and Settings\janderson\Meus documentos\JCreator Pro\MyProjects\OrdernarLista\src\Pessoa.java:2: Pessoa is not abstract and does not override abstract method compareTo(Pessoa) in java.lang.Comparable
public class Pessoa implements Comparable {
^
1 error

Process completed.

6 Respostas

D

a assinatura do teu metodo compareTo(Pessoa) tah errado, nao tah sobrescrevendo… presta atençao ali nas letras maiusculas e minusculas… o detalhe está ai…

[]´s

J

didiosam:
a assinatura do teu metodo compareTo(Pessoa) tah errado, nao tah sobrescrevendo… presta atençao ali nas letras maiusculas e minusculas… o detalhe está ai…

[]´s

Não estou conseguindo me deparar com o erro informado.

fiz isso

public int compareTo(Pessoa o){ int valor = nome.compareTo(o.nome); return (valor != 0 ? valor : 1); }

será que preciso criar um classe interface para esse metodo?

D

opa, ali na tua classe Pessoa tu tem esse metodo::

public int compareTO(Pessoa o){  
         int valor = nome.compareTo(o.nome);  
         return (valor != 0 ? valor : 1);  
}

mas veja que o compareTO tem o ultimo ‘O’ como maiusculo, e na verdade ele tem que ser minusculo para que vc esteja implementando o metodo da interface Comparable… o erro que voce obtem diz que a interface Comparable te obriga a sobrescrever o metodo compareTo dela, mas veja que o dela é minusculo o ultimo ‘o’, como java eh case sensitive vc obtem esse erro… troca o teu metodo por esse::

public int compareTo(Pessoa o){  
        int valor = nome.compareTo(o.nome);  
        return (valor != 0 ? valor : 1);  
}

e ve se assim resolve esse erro que voce esta tendo

[]´s

D

opa esqueci de fala, se nao me engano o teu compareTo tem que receber como argumento um Object, dae dentro dele tu faz o cast pra Pessoa… se apos o passo de cima ainda tiver erro tenta fazer isso, troca o parametro de Pessoa no compareTo para Object e dentro do metodo tu faz cast pra Pessoa

(obs: tenbho quase certeza q nao precisa desse passo, mas se ainda der erro trocando o nome ali dae tenta ele)

qualquer coisa posta ai o erro

[]´s

Vini_Fernandes

Sua implementacao esta errada. Deve ser feita assim:

public int compareTo(Object o){     
        Pessoa pessoa = (Pessoa)o;
        int valor = nome.compareTo(pessoa.nome);     
        return (valor != 0 ? valor : 1);     
}
dm_thiago

Pelo que eu me lembre, se ele usou generics na declaração do comparable, então o tipo do argumento do método compareTo tem que ser o mesmo.

public class Pessoa implements Comparable<Pessoa> {  
......
public int compareTo(Pessoa o){
...

Acredito que o erro seja mesmo somente aquele O maiúsculo.

Criado 11 de junho de 2009
Ultima resposta 11 de jun. de 2009
Respostas 6
Participantes 4