Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas Com Arraylist


Lucas Phillip

Pergunta

Aew pessoal, beleza?

bom, meu problema é o seguinte: eu to com um arraylist e com um for each para passar por todo os elementos desse array. O problema é que as vezes durante algum for, um elemento do array é excluido o que causa um erro no for.. eu coloquei pra tratar o erro, só que se da erro no meio do arraylist, os elementos que ainda não haviam sido consultados são ignorados, porque o script vai pro catch pra tratar tal erro..

alguém tem alguma solução pra isso?? porque eu preciso realmente que todos os valores do array sejam verificados...

vlw :D

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0
hmm.. mas no do - while, se algum registro for removido do arraylist não vai causar erro?

Não, porque aí é você quem vai estar controlando o índice. Ou seja, você não vai incrementar o índice quando remover já que os itens serão deslocados. E a condição do Do While lhe permitirá terminar o loop quando o índice igual a quantidade de itens da coleção.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

hmm... :blink:

ok.. hehe.. é um pouco mais complicado do que eu pensei pelo sequinte motivo. Eu não estou guardando strings ou integers etc no arraylist.. to guardando "structures"... então não estou conseguindo pegar os valores.

por exemplo, com for each estava assim:

For Each usuario As ClientInfo In Lista

                        If (usuario.Nome = Explode(1)) Then
                            usuario.Status = "idle2"
                            Exit For
                        End If

                    Next

dentro do do while, eu teria que espeficicar o indice.. só que se eu faço lista.item(1) por exemplo, vai voltar o valor da estrutura toda... como eu faço então para poder pegar ".status" da estrutura, igual no for each??

vlw

Link para o comentário
Compartilhar em outros sites

  • 0

Mas, não tem problema nenhum. Os itens de uma ArrayList são sempre Object, então pela característica de late-binding presente no VB.NET, você pode fazer:

Debug.Print(lista.Item(i).Status)
Se fosse em C# você teria que fazer de uma forma diferente (semelhante a forma abaixo). Outra possibilidade, em VB.NET, seria assim:
Dim obj As ClientInfo  = lista.Item(i)
Debug.Print(obj.Status)

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

aew gray.. funcionou perfeitamente :D

agora, só para eu entender diretim, utilizando o do para um arraylist com 3 elementos, e no caso de estar no elemento 1 e o 2 sair, o elemento 3 vai passar a ser o 2 e o "do" só vai fazer o loop nos 2, ou é necessário tratar o elemento 2 que não existe mais?

vlw

Link para o comentário
Compartilhar em outros sites

  • 0
aew gray.. funcionou perfeitamente :D

Beleza, então. :)

agora, só para eu entender diretim, utilizando o do para um arraylist com 3 elementos, e no caso de estar no elemento 1 e o 2 sair, o elemento 3 vai passar a ser o 2 e o "do" só vai fazer o loop nos 2, ou é necessário tratar o elemento 2 que não existe mais?

Quase isso... Quanto ao que acontece com os itens quando um é removido você explicou corretamente. Porém, ao falar do Do While você pecou em uma coisa: ao contrário do For Each, o Do While *não* se importa com a quantidade de itens (aliás, ele não quer nem saber que você o está usando com uma coleção). O loop vai ser repetido enquanto a condição estabelecida for verdadeira. O For Each é específico para se percorrer uma coleção, enquanto que o Do While é um loop que obedece a uma condição. Por acaso estamos usando uma coleção dentro do loop, mas isso não é um requisito.

Sacou? ;)

Graymalkin

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...