Passagem de ArrayList

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

Se a classe que você usa, possui uma interface, então procure declarar as variáveis como sendo do tipo da interface.

1 curtida

Meu projeto tem 3 classes, como está em padrão MVC: View, ViewController e InserirModel. Na interface tenho as variaveis correspondentes a número da conta, titular, saldo inicial e limite. (São campos que o usuario preenche) Poderia exemplificar para eu entender melhor essa sua afirmação?

No pacote java.util existem algumas classes e interfaces.
A classe ArrayList implementa a interface List.

Então no seu código, ao invés de declarar as variáveis como sendo do tipo ArrayList (classe), declare como List (interface).

1 curtida

Exemplifique por favor essa declaração das variáveis. (Estou meio boiando ainda ‘-’ kkk)

Ao invés de declarar assim:

ArrayList<TipoDeDado> minhaLista;

Declare assim:

List<TipoDeDado> minhaLista;
1 curtida

No caso eu fiz assim:

List Insere = new ArrayList<>();

Ou deveria ser assim:

List Insere = new List<>();