Contar os elementos de uma instancia

bom dia estou com um problema para contar os elementos de uma instancia se puderem me ajudar

[code]import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

class MinhaLista {
private List itens = new ArrayList();
public void add (T item) { itens.add(item); }
public T primeiro() { return itens.get(0); }
public T ultimo() {return itens.get(itens.size()-1);}

public T aleatorio() {
return itens.get((int)(Math.random()*(itens.size()-1)));}

public String pertence(T object) {
if( itens.contains(object))
return “Pertence”;
return “não Pertence”;}

public String igual(MinhaLista ml2) {
Iterator i = itens.iterator();
Iterator i2 = ml2.itens.iterator();
while (i.hasNext() && i2.hasNext()) {
if (i.next() != i2.next())
return “não são iguais”;}

     if (!i.hasNext() && !i2.hasNext())
           return "são iguais";

return “não são iguais”;}

public String contida(MinhaLista ml2) {
Iterator i = itens.iterator();
List l2 = ml2.itens;
while (i.hasNext()) {
if (!l2.contains(i.next()))
return “Não esta Contida”;}

return “Esta contida”;}

public String contem(MinhaLista ml2) {
if( “Esta contida”.equals(ml2.contida(this)))
return “Contem”;
return “Não contem”;}

public MinhaLista intersecao(MinhaLista ml2) {
MinhaLista mlNova = new MinhaLista();
Iterator i = itens.iterator();
while (i.hasNext()) {
T obj = i.next();
if (“Pertence”.equals(ml2.pertence(obj)))
mlNova.add(obj);}

return mlNova;}

public void exibe() {
Iterator i = itens.iterator();
while (i.hasNext()) {
System.out.print(i.next().toString());}
System.out.println();}

public String Concatena(MinhaLista ml2,MinhaLista ml){
return ml2.aleatorio().toString()+ml.aleatorio().toString();}

public int ContaElemento(MinhaLista ml2){ // o metodo esta dando um loop infinito
int cont=0;
while (!"".equals(ml2.itens.toString())) {
cont++;
}
return cont ;
}

}
public class ControleLista {
public static void main(String[] args) {
MinhaLista ml = new MinhaLista();
MinhaLista ml2 = new MinhaLista();
ml.add(“primeiro”);
ml.add(“segundo”);
ml2.add(“primeiro”);
ml2.add(“segundo”);

System.out.println("a) Ã?ltimo elemento: " + ml.ultimo());
System.out.println();
System.out.println("b) Elemento qualquer: " +ml.aleatorio());
System.out.println();
System.out.println("C) Terceiro pertence a lista? " + ml.pertence(“terceiro”));
System.out.println();
System.out.println("d)As listas são iguais? " + ml.igual(ml2));
System.out.println();
System.out.println("e)L1 está contida em L2? " +ml.contida(ml2));
System.out.println();
System.out.println("f)L1 contém L2? " +ml.contem(ml2));
System.out.println();
System.out.print("g)Calcula interseção: ");
ml.intersecao(ml2).exibe();
System.out.println();
System.out.println(“i) Os Itens Concatenados São:”+ml.Concatena(ml2,ml));
System.out.println();
System.out.println("j) A quantidade de elementos: "+ml.ContaElemento(ml2));
}}[/code]

Cara,

eu achei sua classe confusa, talvez porque esteja mal edentada (aqui no post do GUJ) ou por realmente ser confusa.
Como estamos falando em generics, o seu T pode ser qualquer coisa, o que torna mais complicado a análise e teria de olhar método a método de sua classe.

Todavia, vejo que você usa o toString() no seu laço de repetição para que faça a comparação, três adendos.

1 - A cada iteração você invoka o método toString(), porque não fazer isso fora do laço de repetição e usar a String de retorno no laço? :slight_smile:
2 - Provavelmente terás de sobrescrever o método toString() de Object, para que ele tenha a ação esperada. O que deve estar acontecendo é que o método toString() deve estar retornando o valor contido no método Object, por isso nunca vai ser vazio ou “”, como queira.
3 - Se usar apenas equals("") a String terá de ser exatamente isso. Eu costumo usar minhaString.trim().isEmpty() quando quero confirmar se a String é vazia ou não, pois dificilmente eu considero que " " é um preenchimento válido.

Forte abraço.

Eu ja tentei com o isEmpty mas da a mesma coisa eu uso o toString para tentar contar os elementos da instancia mas nao ta funcionando,era para queria criar um metodo que retornasse a quantidade de elementos da instancia

Consegui foi simples assim

public int ContaElemento(MinhaLista<T> ml2){ List<T> l2 = ml2.itens; return l2.size(); }}

valeu