| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2009 11:38:44
|
rmalati
Virtual Machine Man
![[Avatar]](/images/avatar/3bc8f7011e08bfe6830c967b497bdf6d.jpg)
Membro desde: 26/11/2007 09:10:30
Mensagens: 593
Localização: Jundiaí-SP
Offline
|
Pessoal,
me deparei com a sequinte questão do Inquisition que pede qual a saída:
A resposta correta é:
Prints bye 2 followed by an Exception (ConcurrentModificationException)
Só que não consegui entender o motivo de não poder remover um elemento da Queue utilizando um for
Isso acontece com os métodos offer() e poll().
Alguém tem uma explicação?
Obrigado.
|
Rodrigo Malatesta Barbosa
Graduando em Tecnologia Informática Unicamp
SCJP 1.6 - 93%
"A disciplina é o caminho mais curto para o sucesso"
"Se não puder destacar pelo talento, vença pelo esforço. (Provérbio indiano)" |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2009 11:54:08
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Você não pode modificar algumas coleções enquanto está "andando" sobre elas (ou seja, quando você estiver usando um iterador).
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2009 12:59:52
|
rmalati
Virtual Machine Man
![[Avatar]](/images/avatar/3bc8f7011e08bfe6830c967b497bdf6d.jpg)
Membro desde: 26/11/2007 09:10:30
Mensagens: 593
Localização: Jundiaí-SP
Offline
|
thingol wrote:Você não pode modificar algumas coleções enquanto está "andando" sobre elas (ou seja, quando você estiver usando um iterador).
Entendi.
thingol, no caso dos conjuntos além de Queue existe outro tipo que ocorre a mesma situação(List, Set, Map)?
Eu to fazendo alguns testes mas até agora não vi nada de errado.
Obrigado.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2009 13:08:07
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
ArrayList tem esse comportamento (você não pode usar "remove" assim, sem mais nem menos) mas CopyOnWriteArrayList não tem esse comportamento. De qualquer maneira, em uma prova de certificação, saber que classes têm esse comportamento não cai com certeza.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2009 15:10:05
|
rmalati
Virtual Machine Man
![[Avatar]](/images/avatar/3bc8f7011e08bfe6830c967b497bdf6d.jpg)
Membro desde: 26/11/2007 09:10:30
Mensagens: 593
Localização: Jundiaí-SP
Offline
|
valeu ai thingol pela explicação.
|
Rodrigo Malatesta Barbosa
Graduando em Tecnologia Informática Unicamp
SCJP 1.6 - 93%
"A disciplina é o caminho mais curto para o sucesso"
"Se não puder destacar pelo talento, vença pelo esforço. (Provérbio indiano)" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2009 17:32:02
|
Daniel.F
GUJ Ranger
Membro desde: 29/03/2007 18:30:39
Mensagens: 909
Offline
|
Eu não entendi porque imprime 2 o poll() remove o elemento da lista e depois lança a exceção??
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2009 18:43:40
|
rmalati
Virtual Machine Man
![[Avatar]](/images/avatar/3bc8f7011e08bfe6830c967b497bdf6d.jpg)
Membro desde: 26/11/2007 09:10:30
Mensagens: 593
Localização: Jundiaí-SP
Offline
|
Eh isso tb não entendi.
Já que não eh permitido remover, pq já não lança a exceção?
|
Rodrigo Malatesta Barbosa
Graduando em Tecnologia Informática Unicamp
SCJP 1.6 - 93%
"A disciplina é o caminho mais curto para o sucesso"
"Se não puder destacar pelo talento, vença pelo esforço. (Provérbio indiano)" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2009 08:24:46
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Quem lança a exceção não é o remove ou poll ou outra rotina. É o iterator (não sei se é o hasNext ou o next que faz isso, é questão de ver o stack trace.)
Isto aqui:
equivale a:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2009 09:23:17
|
rmalati
Virtual Machine Man
![[Avatar]](/images/avatar/3bc8f7011e08bfe6830c967b497bdf6d.jpg)
Membro desde: 26/11/2007 09:10:30
Mensagens: 593
Localização: Jundiaí-SP
Offline
|
Puts thingol, vc manja muito.
valeu mesmo pela explicação.
|
Rodrigo Malatesta Barbosa
Graduando em Tecnologia Informática Unicamp
SCJP 1.6 - 93%
"A disciplina é o caminho mais curto para o sucesso"
"Se não puder destacar pelo talento, vença pelo esforço. (Provérbio indiano)" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2009 10:28:26
|
ivandasilva
JavaEvangelist
![[Avatar]](/images/avatar/f0c19e4e1cbcc224b862bb4579a06a7e.jpg)
Membro desde: 03/11/2007 11:48:58
Mensagens: 309
Offline
|
Aproveitando a deixa, como eu faco para obter os objetos atraves de um iterator em um PriorityQueue ou BlockingQueue...
Grato...
|
O sol nasce, a bicicleta anda, o lobo uiva e o urso panda.  |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2009 11:48:20
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Saída:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2009 12:00:41
|
rmalati
Virtual Machine Man
![[Avatar]](/images/avatar/3bc8f7011e08bfe6830c967b497bdf6d.jpg)
Membro desde: 26/11/2007 09:10:30
Mensagens: 593
Localização: Jundiaí-SP
Offline
|
thingol,
o mais estranho é que se tiver apenas 2 objetos no PriorityQueue, não sobe exceção alguma.
|
Rodrigo Malatesta Barbosa
Graduando em Tecnologia Informática Unicamp
SCJP 1.6 - 93%
"A disciplina é o caminho mais curto para o sucesso"
"Se não puder destacar pelo talento, vença pelo esforço. (Provérbio indiano)" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2009 12:14:32
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Hum.. só olhando o fonte de PriorityQueue. E é por isso que tal questão do Inquisition não tem a mínima chance de cair na prova desse jeito, porque é mal-formulada.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2009 12:25:37
|
ivandasilva
JavaEvangelist
![[Avatar]](/images/avatar/f0c19e4e1cbcc224b862bb4579a06a7e.jpg)
Membro desde: 03/11/2007 11:48:58
Mensagens: 309
Offline
|
Thingol, obrigado pelo exemplo!!
|
O sol nasce, a bicicleta anda, o lobo uiva e o urso panda.  |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 25/03/2009 12:37:49
|
rmalati
Virtual Machine Man
![[Avatar]](/images/avatar/3bc8f7011e08bfe6830c967b497bdf6d.jpg)
Membro desde: 26/11/2007 09:10:30
Mensagens: 593
Localização: Jundiaí-SP
Offline
|
thingol wrote:Hum.. só olhando o fonte de PriorityQueue. E é por isso que tal questão do Inquisition não tem a mínima chance de cair na prova desse jeito, porque é mal-formulada.
Cara, muito estranho né.
tava fuçando nesse tópico http://www.guj.com.br/posts/list/30323.java
mas fiquei foi mais confuso.
Aproveitando já q vc disse, o nível do Inquisition tá muito acima da prova?
Abraço e obrigado novamente pelas respostas.
|
|
|
 |
|
|