Como encontrar o indice de um objeto que está dentro de um arraylist usando IndexOf?

public class Cliente {

private String nome;
private String endereço;
private String cpf;
private int idade;
private Conta conta_1;
private Conta contaAdicional_2;

//não coloquei os gets/sets para ficar facil de vcs verem

}

tenho um array list chamando cli e dentro dele guardei varios objetos da classe Cliente. como posso pesquisar os indices de cada objeto pelo nome utilizando o indexOf??

sobreescreve o equals com o atributo nome

Já tinha feito isso, mas o indice sempre retorna -1… vou colocar a parte do meu código

[code]public static void editarCliente()
{
Scanner sc = new Scanner(System.in);
int op_1,op_2=0,op_3 = 0;
while(op_2!=2)

     {
    	 
     
	 System.out.println("Digite uma das opções abaixo");  
     System.out.println("----------------------------");  
     System.out.println("1 - Pesquisar Clientes");  
     System.out.println("2 - voltar");  
     op_2=sc.nextInt();
       
	if(op_2==1)
	{

Iterator busca = cli.iterator();
while (busca.hasNext()){ //resolveu o problema de reconhecer o primeiro da lista
Cliente clienteBusca = (Cliente)busca.next();

	System.out.println("Digite o nome do cliente");
	String nomeBusca;
	nomeBusca=sc.next();
	
	if(clienteBusca.getNome().equals(nomeBusca)) {
		//string dentro do indice
		System.out.println(clienteBusca.getNome()+" Está cadastrado!");
		int indice = cli.indexOf(nomeBusca); 
		System.out.println(indice+" indice"); //verificar pq ta dando -1
		System.out.println(" Desejá alterar dados deste cliente? (1-sim) (2-não)");
		op_1=sc.nextInt();

//…

[/code]

coloca sua classe cliente com o
equal e hascode ai

mais vc tem que fazer assim

int indice = cli.indexOf(clienteBusca);

você tem que passar o objeto cliente como parametro indexof da lista de Clientes

Cara valeu, deu certo aqui!!

Deu certo a principio, mas só estou encontrando o 1° nome cadastrado na lista, para encontrar o 2° nome vai aparecer que o cliente não está cadastrado, ai coloco o nome de novo e ele aparece como cadastrado, o mesmo acontece com o 3° cliente , apos a 3° tentativa ele encontra o nome cadastrado e assim por diante…
é como se o iterator só chegasse na conta que está na lista, depois que o laço terminasse, alguem sabe oq está acontecendo??

[code]public static void editarCliente()
{

	 Scanner sc = new Scanner(System.in); 
     int op_1,op_2=0,op_3;
     while(op_2!=2)
     
     {
    	 
     
	 System.out.println("Digite uma das opções abaixo");  
     System.out.println("----------------------------");  
     System.out.println("1 - Pesquisar Clientes pelo nome completo");  
     System.out.println("2 - voltar");  
     op_2=sc.nextInt();
     
     sc.nextLine();// alternativa para esvaziar o buffer do teclado
       
	if(op_2==1)
	{
	
	
	Iterator<Cliente> busca = cli.iterator(); 
	System.out.println("Digite o nome do cliente");
	String nomeBusca;
	
	while (busca.hasNext()){       
	Cliente clienteBusca = (Cliente)busca.next();  
	


	
	
	nomeBusca=sc.nextLine();
	
	if(clienteBusca.getNome().equals(nomeBusca)) { //compa
		
		System.out.println("Está cadastrado!");
		int indice = cli.indexOf(clienteBusca); 
		
		System.out.println(" Desejá alterar dados deste cliente? (1-sim) (2-não)");
		op_1=sc.nextInt();[/code]

É sempre importante ler sobre a API no qual trabalha, principalmente se conhece pouco sobre a mesma.
Interface List: http://docs.oracle.com/javase/7/docs/api/java/util/List.html
Método indexOf(Object o): http://docs.oracle.com/javase/7/docs/api/java/util/List.html#indexOf(java.lang.Object)

Essa parte é crucial: [quote]Returns the index of the first occurrence of the specified element in this list…[/quote]

A primeira ocorrência…entendeu ? :slight_smile:

[code] if(clienteBusca.getNome().equals(nomeBusca)) { //compa

        System.out.println("Está cadastrado!");[/code]

Meu problema ta aqui, é antes do indexOf, acontece que ele só compara o nomeBusca para o primeiro objeto da lista, para o segundo e em diante só compara depois de digitar 2 vezes em diante(no caso depois 2 laços do while)…

no console fica assim:

Digite uma das opções abaixo

1 - Pesquisar Clientes pelo nome completo
2 - voltar
1
Digite o nome do cliente
a
Não está cadastrado!
Digite o nome do cliente
a
Está cadastrado!
Desejá alterar dados deste cliente? (1-sim) (2-não)