Passagem de ArrayList

Iae galera tudo bem… Sou novo em java e estou com um problema. Quando passo um ArrayList por parametro a outro metodo, o problema é que na hora da saida, pois não esta saindo o nome do Objeto mas algo mais ou menos parecido com isto…

Saida : programandocomputadores.TV@1cfb549

Não entendi bem, vc poderia se explicar melhor?

Vou fazer um exemplo para ver se é o que você quer.

package teste;

import java.util.ArrayList;
import java.util.Iterator;

public class ArraysJava{
    public static void main(String[] args){
        ArrayList<String> SeuArray = new ArrayList<String>();
        Iterator Valores = SeuArray.iterator();
        while(Valores.hasNext()){
            String vals = Valores.next();
            System.out.println(vals);
        } 
    }
}

como posso explicar… Estou fazendo um Gerenciador de campeonato, durante o processo eu seleciono o número de jogadores

//ENTRAR COM NÚMERO DE JOGADORES
int N = Integer.parseInt(JOptionPane.showInputDialog(" Entre com número de jogadores: "));
for(int i=0;i<N;i++){

       String Nome = JOptionPane.showInputDialog(" Nome: ");
      
       
       Jogs.add(new Jogador(Nome)); // CRIOU O OBJETO E ADICIONO AO ARRAYLIST
}

       Gera_Grupo.Fase_Group(Jogs); //PASSO O ARRAYLIST PARA OUTRO METODO

Para este método que vou mostrar agora

static public void Fase_Group(ArrayList Jogs){

    ArrayList<Jogador> Grupo = new ArrayList<Jogador> ();
    
            

    
     int i, j,b;
     cont = Jogs.size();
     Jogador Transp;

//COMEÇA PROCESSO PARA SELEÇÃO DE CHAVES
System.out.printf(“GRUPO 1\n\n”);
for(i=0;i<4;i++){

      do{   
            Random gerador = new Random(); 
            int numero = gerador.nextInt(cont);
           // Seleção aleatória de números 
            b = numero;

           Transp = Jogs.get(b);//ADICIONANDO POSIÇÃO B À VARIÁVEL
            
            Jogs.remove(b);
            Jogs.add(b,null);// OCUPAR O LUGAR DO OBJETO EXCLUIDO
                           
      }
        while(Transp == null);
      
            Grupo.add(Transp);// GRUPO FORMADO

   System.out.printf(" %s \n", Transp);
   
     }

O Resultado do segundo método seria os nomes de todos os jogadores (objetos). Exemplo:

Grupo 1

Paulo
Rodrigo
Diego
Nunes

Porém o resultado está saindo assim:

GRUPO 1

Nt_console.Jogador@1376c05c
Nt_console.Jogador@51521cc1
Nt_console.Jogador@1b4fb997
Nt_console.Jogador@deb6432

Bom, vamos la.

primeiramente umas dicas. Quando for posta codigo coloque o mesmo entre as tags [code"][/code"] (sem as aspas fica melhor melhor para entendermos). Outra dica faça uma pesquisa sobre boas praticas de programação java, é uma serie de convenções por exemplo, devemos nomear variaveis iniciando com letra minuscula caso sejam mais de uma palavra, iniciamos com minuscula e a primeira letra da segunda em maiuscula seguido de minusculas exemplo:

String nome;
Date dataDeNascimento;

Agora vamos ao seu problema. Pelo q eu entendi "Transp" e um objeto do tipo "Jogador" e para imprimir o nome do mesmo ñ podemos simplesmente manda exibir "Transp" pois ele um objeto para imprimir o atributo "nome" você deve criar os metodos de acesso getters e setters, ai vc poderia fazer uma chamada ao metodo get do atributo nome (Transp.getNome()) para exibir o nome.
mas caso vc ñ tenha definido o atributo como "private"(faça uma pesquisa também sobre modificadores de acesso para entender melhor caso vc ñ saiba oq a palara reservada private faça), so precisaria fazer "Transp.nome" exemplo

System.out.println("%s \n", Transp.getNome()); //caso tenha definido a variavel como private

ou

System.out.println("%s \n", Transp.nome);

O galera muuuito obrigado pelas dicas

Funcionou? se sim edite o topico e no inicio do nome coloque [RESOLVIDO]. Qualquer duvida e só falar.

Cara funcionou cara … Obrigado mesmo rodou direitinho…

Galera, no caso de eu usar um iterator para percorrer uma arraylist, porem usando a arquitetura MVC (no caso seria no controller), o código “padrão” de iterator mudaria?

No caso, o código “padrão” seria assim:

for (Iterator iterator = a.iterator(); iterator.hasNext();) {
            suaClasse obj = (suaClasse) iterator.next();

Ou:

while (iterator.hasNext()) {
            suaClasse obj = iterator.next();

Mas no caso, usando no controller, o código seria este mesmo ou sofreria alguma mudança?

MVC não tem nada a ver com a forma que você itera suas coleções.

Particularmente ao invés de fazer assim:

for (Iterator iterator = colecaoDeObjetos.iterator(); iterator.hasNext(); ) {
    TipoDeDado objeto = (TipoDeDado) iterator.next();

Faço assim, pois é bem mais legível:

for (TipoDeDado objeto : colecaoDeObjetos) {
1 curtida

No caso, quando criei a arraylist pus como tipo de dado a classe Model, onde ficará guardado os valores que o usuario digitou na View:

ArrayList <InserirModel> Insere = new ArrayList <>();

Porém, quando vou criar um metodo no Controller, ele não aceita eu criar o iterator dessa forma que vc me disse, e que eu marquei logo acima:

public class ViewController {
    
    InserirModel im = new InserirModel();

    public void mostraDados(ArrayList a) {
    for (InserirModel obj : a) {
            
        // Digitando isso, o NetBeans ja me da um alerta dizendo pra mudar a variável "obj" para o tipo Object, mas dessa forma, perco a referência ao Model. 
        
        }

Como suceder nesse caso?

Quando crio o for each na View, ele aceita, mas no Controller, ele da esse alerta

As implementações da interface List são genéricas desde o Java 5, então procure especificar o tipo de dado ao declará-las.
Se não especificar o tipo, o compilador entende como sendo Object.

Troque a seguinte assinatura de método:

public void mostraDados(ArrayList a) {

Para ser assim:

public void mostraDados(List<InserirModel> a) {
2 curtidas

Aparece uma mensagem dizendo que list não aceita parâmetros. Mas pondo “arraylist” o erro é corrigido. Dessa forma aqui deu certo:

public void mostraDados(ArrayList<InserirModel> a) {

Mas, obrigado @staroski pela ajuda!

você pode ter importado a lista errada. List é uma interface que é implementada por ArrayList.

So tem uma lista no meu programa. E mudando para “arraylist” deu certo.

O correto ainda seria utilizar a List. Novamente: Você deve ter importado errado.

Mas ai no caso vc está dizendo la no import? Aquela parte la de “import java” ?

Sim. Muitas vezes eu importei a List do pacote errado e não consegui utilizar. Dizer “List não aceita parâmetros” é quase um indicativo que você importou errado, rs.

Usar List ao invés de uma ArrayList é apenas uma boa prática, não uma obrigação. Com uma List, independente de você receber uma List, uma ArrayList ou uma LinkedList você não vai ter problemas.

1 curtida

Você deve ter importado java.awt.List ao invés de java.util.List.
É só corrigir seu import.

Ahh certo kk vou dar uma olhada.

Ótimo conselho! Sou novo no java então é sempre bom ouvir a voz da experiência kkk

Ja conferi aqui e era isso mesmo! Obrigado pela paciência @staroski e @FearX