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…
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:
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
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, 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.
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.