Contar elementos de um List

8 respostas
J

bom dia

gostaria de criar um codigo para contar os elementos iguais a um certo parametro de antrada

public Integer QuantVitorias(Lista l,String Nome)   {
       int j;
      Iterator<Lista> it = l.iterator();  
          while (it.hasNext()) {  
               if( it.next().getnome().equals(Nome));  
                     j++;  
                    } ;
		               return j;

}

so que quando roda diz que nao reconheceu o l.iterator

8 Respostas

nel

jobs:
bom dia

gostaria de criar um codigo para contar os elementos iguais a um certo parametro de antrada

public Integer QuantVitorias(Lista l,String Nome)   {
       int j;
      Iterator<Lista> it = l.iterator();  
          while (it.hasNext()) {  
               if( it.next().getnome().equals(Nome));  
                     j++;  
                    } ;
		               return j;

}

so que quando roda diz que nao reconheceu o l.iterator

Importou corretamente o Iterator? Lembre-se, deve ser um java.util.Iterator.

samirrolemberg

Voce realmente precisa do Iterator?

int j = 0; for(int i = 0; i<lista.size(); i++){ if(lista(i).getNome().equals(nome)) j++; }

ou

for(Objeto o : lista){
     if(o.getNome().equals(nome))
          j++;
}

ja nao resolveria?

J

sim ja usei o java .util.*
ja tentei usar o for ficou desse jeito

public Integer QuantVitorias(Lista l,String Nome)   {
           int j = 0;
           for(int i = 0; i<l.size(); i++){
             if(l.get(i).getVencedor().equals(Nome))
                     j++;                     
                    } 
		               return j;
}

so que continua dando erro
nao sei se e por esse metodo esta sendo implementado dentro da propria classe lista

nel

Cara, agora que eu vi. Mas também…deixa para lá.
Vamos ao problema, o que é a classe Lista ? Ela não é nativa !!! Ela é uma classe criada por você !

O l.iterator vai funcionar se for um java.util.List !
Use um java.util.List que vai funcionar ! De resto, faça igual o samirrolemberg disse pois funciona perfeitamente.

J

cara vou postar codigo completo

import java.util.*;

class Lista{
  String Data,Competicao,Pais,Nome;
  double Ponto,Premiacao;
  
  public Lista(String d,String c,String pa,double po,double pe,String v){
     this.Data=d;
	 this.Competicao=c;
	 this.Pais=pa;
	 this.Ponto=po;
	 this.Premiacao=pe;
	 this.Nome=v;
  
  }
   
   public String getdata(){return Data;}
   public void Setdata(String Data){this.Data=Data;	}
   
   public String getCompeticao(){return Competicao;}
   public void SetCompeticao(String Competicao){this.Competicao=Competicao;}
   
   public String getPais(){return Pais;}
   public void SetPais (String Pais){this.Pais=Pais;}
   
   public double getPonto(){return Ponto;}
   public void SetPonto(double Ponto){this.Ponto=Ponto;}
   
   public double getPremiacao(){return Premiacao;}
   public void SetPremiacao(double Premiacao){this.Premiacao=Premiacao;}
   
   public String getNome(){return Nome;}
   public void SetNome (String Nome){this.Nome=Nome}
   
    public Integer QuantVitorias(Lista l,String Nome)   {
       int j;
      Iterator<Lista> it = l.iterator();  
          while (it.hasNext()) {  
               if( it.next().getNome().equals(Nome));  
                     j++;  
                    } ;
		               return j;}
   
   public String toString(){
     return this.Data=Data+" "+this.Competicao+" "+this.Pais+" "+this.Ponto+" "+this.Premiacao+" "+this.Nome+"\n";}
   }

acho que vou ter que implementar outra classe para colocar esse metodo?

nel

Cara, lista não é uma lista, é simplesmente uma classe. O que ela tem de lista? Nada…
Tu deu um nome “indevido”, eu diria.

Isso aqui é uma lista:

List<Lista> list = new ArrayList<Lista>();

Isso sim pode ser iterado. Não existe laço de repetição para exclusivamente o seu objeto. Sua classe não tem método size(), não tem o Iterator, até porque não faria o menor sentido tu por ela ali. Esse nome está confundindo sua lógica e entendimento, altere esse nome e repense o que tu precisa.

J

eu realmente nao entendo mto de lista , e que ela ja foi implementada no metodo principal,
olha o codigo inteiro

import java.io.*;
import java.util.*;

class Lista{
  String Data,Competicao,Pais,Vencedor;
  double Ponto,Premiacao;
  
  public Lista(String d,String c,String pa,double po,double pe,String v){
     this.Data=d;
	 this.Competicao=c;
	 this.Pais=pa;
	 this.Ponto=po;
	 this.Premiacao=pe;
	 this.Vencedor=v;
  
  }
   
   public String getdata(){return Data;}
   public void Setdata(String Data){this.Data=Data;	}
   
   public String getCompeticao(){return Competicao;}
   public void SetCompeticao(String Competicao){this.Competicao=Competicao;}
   
   public String getPais(){return Pais;}
   public void SetPais (String Pais){this.Pais=Pais;}
   
   public double getPonto(){return Ponto;}
   public void SetPonto(double Ponto){this.Ponto=Ponto;}
   
   public double getPremiacao(){return Premiacao;}
   public void SetPremiacao(double Premiacao){this.Premiacao=Premiacao;}
   
   public String getVencedor(){return Vencedor;}
   public void SetVencedor (String Vencedor){this.Vencedor=Vencedor;}
   
    public Integer QuantVitorias(Lista l,String Nome)   {
       int j;
      Iterator<Lista> it = l.iterator();  
          while (it.hasNext()) {  
               if( it.next().getVencedor().equals(Nome));  
                     j++;  
                    } ;
		               return j;}
   
    }
   
   
class NovaLista extends Lista{
  Integer Qvit;
	
 public NovaLista(String d,String c,String pa,double po,double pe,String v,Integer q){
     super(d,c,pa,po,pe,v);
	 this.Qvit=q;  
  }   
    
   public Integer getQvit(){return Qvit;}
   public void SetQvit(Integer Qvit){this.Qvit=Qvit;}

   
   
   public String toString(){
     return this.Data=Data+" "+this.Competicao+" "+this.Pais+" "+this.Ponto+" "+this.Premiacao+" "+this.Vencedor+"  "+this.Qvit+"\n";}
   }
    
	

      
public class test{
public static void main(String[] args) throws IOException {
    BufferedReader in1 = new BufferedReader(new FileReader("atp.txt"));  
    List<Lista> l = new ArrayList<Lista>();  
	List<NovaLista> l2 = new ArrayList<NovaLista>();
    String s1;  
    String[] p1;  
     try{  
        while ((s1 = in1.readLine()) != null) {  
            p1 = s1.split("/");  
            l.add(new Lista(p1[0],
              				p1[1],
	            			p1[2],
			 Double.parseDouble(p1[3]),
			 Double.parseDouble(p1[4]),
			                p1[5]));  
            }  
			in1.close();
	    } catch (Exception e) { e.printStackTrace(); } 
		
		ordenaPorCompeticao(l);

        for (Lista list : l) {  
           l2.add(new NovaLista(list.getdata(),
		          list.getCompeticao(),
				  list.getPais(),		                        
				  list.getPonto(),
				  list.getPremiacao(),
				  list.getVencedor(),
				  6));
           		   
              }
           System.out.println(l2);			  
	}
	private static void ordenaPorCompeticao(List<Lista> lista) {  
        Collections.sort(lista, new Comparator<Lista>() {  
             public int compare(Lista o1, Lista o2) {  
                return o1.getCompeticao().compareTo(o2.getCompeticao());  
            }  
           
     });  
    }  
	
}

assim eu queria contar os elementos repetidos dela,mas realmente eu nao sei onde implentar o metodo

al.barbosa

Entendi o que está faltando.
A classe que você chamou de Lista não é uma lista e sim um elemento da lista. Essa classe poderia se chamar Competicao, Torneio ou algo parecido.
Pelo que entendi você quer criar uma lista de competições. No método main, você deve criar uma List (ou o nome que você der à classe). E você poderia usar um Iterator para percorrer essa lista.
O método QuantVitorias é para saber o número de vitórias de um competidor, pelo que entendi. No método QuantVitorias, você deve passar como parêmetro uma List (ou somente List se o compilador não aceitar assim). Aí sim você poderá obter um iterator para percorrer a lista.

Criado 3 de maio de 2012
Ultima resposta 3 de mai. de 2012
Respostas 8
Participantes 4