Arraylist - adicionando Itens no mesmo indice

7 respostas
rodrigo.guri

Pessoal estou com um problema basico
nao sei muito bem mexer com arraylist,
mas tenho um projeto grande a fazer e nao posso ficar mexendo com Array normais

oque eu quero é que o codCli esteja no mesmo indice dos outros dados
ex. no relatorio o usuario apenas digita o codigo Cliente e e já tem
os outros dados puxados.
tipo codigo = @23f
dados = nome:joao endereco:carmelias telefone:90198666 email:[email removido]

OBS: não conheco listas genericas ou linkadas, ou estrutura de dados
nao que eu seja preguicoso, mas tentei aprender e achei complicado, nao tenho muito tempo.

no lista.add ele esta adicionando no proximo termo.!

import java.util.ArrayList;
import java.util.Scanner;
/**@JavaCode:Cliente**/

public class Cliente implements Cadastrable{
    
    Scanner s = new Scanner(System.in);

	 private String codCli;  //@12f
    private String nomeCli;
    private String enderecoCli;
    private String telefoneCli;
    private String emailCli;

    ArrayList <String> lista = new ArrayList<String>();
    ArrayList <String> relatorioSimpCli = new ArrayList<String>();

    public String entradaDados() {

        System.out.println("codCliente do Cliente");
            codCli = s.nextLine();
               lista.add(codCli);
        System.out.println("nome do Cliente");
            nomeCli = s.nextLine();
               lista.add(nomeCli);
        System.out.println("endereco do Cliente");
            enderecoCli = s.nextLine();
               lista.add(nomeCli);
        System.out.println("telefone do Cliente");
            telefoneCli = s.nextLine();
               lista.add(nomeCli);
        System.out.println("email do Cliente");
            emailCli = s.nextLine();
               lista.add(nomeCli);
        
		  /**
         * armazena um relatorio cada vez que é cadastrado algum cliente
         * @12f  joao    carmelias   90198666    [email removido]    |
         * @72f  manoel    sete setembro     8894156    [email removido]    |
         **/
        relatorioSimpCli.add(codCli + nomeCli + enderecoCli + telefoneCli + emailCli);
		return relaSimplesCli;
		}
		
}//<Fim classe Cliente>

7 Respostas

S

Java não é orientado a String e sim a objetos.
Vc precisa criar uma classe que irá representar os atributos do cliente.
Vc seta os atributos objeto dessa classe e adiciona a referencia desse objeto.
Isso que vc quer fazer faz apenas com um ArrayList.
Isso não tem haver com generics. O generics serve para informar que aquela lista vai receber tal referencia, no seu caso irá receber apenas String.

rodrigo.guri

talvez setar o valor toda vez que adicionar um item

STring temp = codCli + nomeCli + enderecoCli + telefoneCli + emailCli;
relatorioSimpCli.add(temp);

problemas certo - pq transformamos dados em uma string só

se o codigo for 37 e em algum registro ter
endereco numero 37
ele pega este registro erradamente

posso separar por substring até o primeiro espaço
e separar o primeiro no cod em tokens

sei lá.
tem algum exemplo de referenciar por objeto, guardar o indice
o que eu preciso enteder é acessar o indice ou local em um relatorio

S

Setar os dados de uma vez não irá transformar nada em String, cada tipo de dado ficará com seu tipo.
Se vc tiver um código 37 e um endereço 37 e vc precisar apagar, remover ou alterar, vc procurará pelo que?
Pelo codigo 37! Na mesma referencia que contém esse código, terá tudo referente a esse usuário, por ex: nome, tel, end, email, num, etc.
Então não tem como vc procurar pelo código 37 e o sistema te retornar pelo número 37, a não ser que vc esteja programando errado.
Não há necessidade de criar 2 ArrayList pra isso que vc quer. Com dá pra resolver brincando.

rodrigo.guri

digitei
47
rodrigo
carmelias
9123-1234
[email removido]

System.out.print("a lista contem o nome rodrigo?"); System.out.print("contem "+relatorioSimpCli.contains("rodrigo")); //false System.out.print("contem "+lista.contains("rodrigo")); //true System.out.println("index of "+relatorioSimpCli.indexOf("rodrigo")); //-1 System.out.println("inde of "+lista.indexOf("rodrigo")); //true

desconfio(nao sei), mas parece que em relatorioSimpliCli ele transformou tudo em uma string só com indice 0
fazendo assim relatorioSimpCli.add(codCli + nomeCli + enderecoCli + telefoneCli + emailCli);
os dados nao ficaram separados como disse o colega

tenho set e gets para cada variaveis
Se eu procurar na lista() pelo codigo 37, do jeito que faço nao obtenho nenhum dado apenas este codigo 37
:roll:

rodrigo.guri

conversando com o meu professor ele me disse pra criar um arraylist do tipo Cliente foi oque eu fiz
mais continuo sem entender, este código nao esta compilando

Obs: tenho uma classe Main, e uma classe Cliente que apenas contem os sets e gets usados aqui
não tem nenhum outro metodo de modificação.

import java.util.ArrayList;
import java.util.Scanner;

public class CadastroCliente{
Scanner s = new Scanner(System.in);

    private String codigo, nome, endereco, telefone, email;

    ArrayList<Cliente> listaClientes = new ArrayList<Cliente>();
//identado para melhor visualizacao

    void entradaDados() {
        System.out.println("codigo do cliente = ");
            codigo  = s.nextLine();
listaClientes.get(0).getCodCli(codigo);

        System.out.println("nome do cliente = ");
            nome = s.nextLine();
listaClientes.get(0).getNomeCli(nome);

        System.out.println("endereco do cliente = ");
            endereco = s.nextLine();
listaClientes.get(0).getEnderecoCli(endereco);

        System.out.println("telefone do cliente = ");
            telefone = s.nextLine();
listaClientes.get(0).getTelefoneCli(telefone);

        System.out.println("email do cliente = ");
            email = s.nextLine();
listaClientes.get(0).getEmailCli(email);
    }

    void geraRelatorioSimples() {
       System.out.println("mostrando os dados inseridos na posicao 0");
       System.out.println(listaClientes.get(0));
    }
    
}//<fim classe CadastroCliente>

neste caso ele diz que excedeu o espaço de indice 0
oque será que meu professor quis dizer, quando disse para criar um arraylist de clientes

rodrigo.guri

pois é como não me ajudam rs :wink:
… eu estive me matando em cima deste problema, e acho que estou perto
da solução, no livro do Caelum obtive uma luz (sempre eles)

estou olhando as interfaces Collection com os Comparable
e este link me ajudou muito
http://www.guj.com.br/posts/list/54036.java#

quando anuviar posto o resultado.

marcio.froes

Não seria melhor vc utilizar class “MAP” ? [caves],[valores] … Assim colocaria em chave o codigo do cliente e valor vc add o restante…

Criado 30 de maio de 2010
Ultima resposta 1 de jun. de 2010
Respostas 7
Participantes 3