Alguém me explica esse questão do :? (RESOLVIDO)

Pessoal alguém pode me explicar o que significa isso?
Busquei um código de list na internet, mas esse código não entendi. basicamente crio um list banco e tenho uma classe dados.

    List<banco> bancos                            = (List) xStream.fromXML(input);
    input.close();
    System.out.println( "#### LISTA DE USUÁRIOS #### ");
    for (banco dados : banco) //Essa sintaxe que gostaria de entender....

procurei sobre o : em tópicos mas não ficou claro, não consegui entender.

Vlw pela ajuda.

Acho que te mostrando um pouco em outras linguagens você consiga chegar a uma conclusão:

js (javascript):

for (var dados in banco)...

Python:

for dados in banco:... 

PHP:

foreach (banco as dados)...

Basicamente os dois pontos no for do java significa um in ou talvez um “para cada item da lista”, etc, vai da sua interpretação, o nome técnico dele é foreach… espero ter ajudado…

1 curtida

Bom… Classes devem começar com a primeira letra maiúscula, assim fica mais fácil o entendimento

Este for é conhecido como forEach.

A assinatura dele seria assim:
for(ClasseDaLista objeto : listaQueVaiSerIterada)

o primeiro banco do seu for é o tipo da sua lista, o dados é o objeto que vai referenciar cada posição da lista e o segundo banco é a própria lista, mas no seu código a lista se chama bancos e não banco

1 curtida

Entendi agora, obrigado…
Outra pergunta, como posso retornar essa lista para usar em outro método?

Passa como parametro

public void blablabla(List<Banco> bancos){
...
}

List<Banco> bancos= new ArrayList<>();
blablabla(bancos);

for(Classe nomeDaVariavel : Lista)

Em um exemplo pratico:

for (Produto p : listaProdutos){
      System.out.print(p.getNome());
}

Você lê como “para cada tipo de Produto da lista listaProdutos imprima o nome”

Esse operador FOR é comumente chamado de FOREACH e as vezes em alguns casos ele é chamado de for aprimorado, ele é muito usado para percorrer ArrayList, a sintax dele é bem simples, você só precisa informa a classe e definir uma variável em seguida : (dois pontos), então, informe o ArrayList que irá ser percorrido.

Observe o exemplo abaixo.

import java.util.ArrayList;

public class Principal {

   public static void main(String[] args) {

    ArrayList<Integer> numeros = new ArrayList<Integer>();
    numeros.add(1);
    numeros.add(2);
    numeros.add(3);
    numeros.add(4);
    numeros.add(5);

    for (Integer var : numeros) {
        System.out.println(var);
    }

  }
}

No que se diz a respeito das vantagens que ele tem sobre o for comum quando se trata de ArrayList é que você não precisa informar o tamanho do array, condiçoes e etc, pois ele automaticamente vai percorrer o array por completo, o que te dá uma certa vantagem, você escreve menos e obtém o o mesmo resultado.

Obs. Um maneira de gravar e entender o que ele faz e como faz é: (Observe o comentario.)

//PERCORRA CADA ELEMENTO par DO TIPO int DENTRO DE pares.
int[] pares = {2, 4, 6, 8, 10, 12};
for(int par : pares){
    System.out.print(par);
}

Espero ter ajudado.

1 curtida
return minhaLista;

Galera realmente não consegui, acredito que seja básico do básico, mas… se alguém puder me ajudar. A respeito do : e do for entendi o que esta pegando é que preciso dos dados para outra classe e pegar o valor de cada objeto lá. Não sei como fazer. vou postar o que tenho.

public static Object lerXMLListaUsuario(String ArquivoCaminho) 
{
            Object[] o = new Object[9];
    try 
    {
        XStream xStream                                     = new XStream(new DomDriver());
        xStream.alias("usuarios", ArrayList.class);
        xStream.processAnnotations(Banco.class);
        File file                                           = new File(ArquivoCaminho);
        BufferedReader input                                = new BufferedReader(new FileReader(file));
        List<Banco> banco                            = (List) xStream.fromXML(input);
        input.close();
        System.out.println( "#### LISTA DE USUÁRIOS #### ");

                    

        for (Banco dados : banco) 
        {
            o[0] = dados.getDriver();
            o[1] = dados.getUrl();
            o[2] = dados.getUsuario();
            
            o[3] = dados.getDriver1();
            o[4] = dados.getUrl1();
            o[5] = dados.getUsuario1();
            
            o[6] = dados.getDriver2();
            o[7] = dados.getUrl2();
            o[8] = dados.getUsuario2();
        }
        for(int i = 0;i < o.length;i++){
            System.out.println(o[i]);//os valores imprimi normal na saída, mas preciso desses valores em outra classe
        }

                    
    } catch (IOException ex) 
    {
        System.out.println(ex.getMessage());
    }
    //System.out.println(o);
return o;
}

Obrigado e desculpa a pergunta.

Modifica seu método lerXMLListaUsuario para retornar uma lista de objetos do tipo Usuario.

1 curtida

public static Object[] lerXMLListaUsuario(String ArquivoCaminho)

Assim o return o; retorna um array de objeto e não um objeto.
Coloque nomes mais sugestivos nas variáveis, o nome “o” quer dizer nada.

1 curtida

Deu certo…Valeu pelas dicas é que estava fazendo uns teste e pra adianta puz somente a letra… Estava faltando o `Object [] no metodo…
:confused:
Vlew galera.