Iterator

Olá Pessoal, estava estudando um codigo sobre Iterator, procurando fazê-lo do meu jeito, e acabou dando um erro, não sei porque, tentei importar as bibliotecas mas msm assim não deu certo, por favor alguem podei=ria me dizer o que foi q fiz e errado:

package Iterator;

import java.util.*;
/**
 *
 * @author desenvolvimento
 */
public class Iterator
{
    public static void main(String args[])
    {
        ArrayList<String> um = new ArrayList<String>();
        um.add("A");
        um.add("B");
        um.add("c");
        Iterator i1 = (Iterator) um.iterator();
        while(i1.hasNext())
        {
            System.out.println(i1.next());
        }
    }
}

Ele da erro justamente no while, não reconhece has next, e nem next…

Obrigado

A tua class chama-se Iterator. Assim, estás a criar um obejcto da tua classe e não um da java.util.Iterator

Mude o nome da sua classe ou use o nome completo da interface Iterator no seu código:

java.util.Iterator i1 = (java.util.Iterator) um.iterator();

[]´s

[quote=davidbuzatto]Mude o nome da sua classe ou use o nome completo da interface Iterator no seu código:

java.util.Iterator i1 = (java.util.Iterator) um.iterator();

[]´s[/quote]

O cast é desnecessário. Simplesmente:java.util.Iterator i1 = um.iterator();

Erro meu. Sai substituindo :slight_smile: Acontece :oops:
[]´s

Mas esse trecho é a biblioteca ou devo por direto na instancaçaõ no meio do codigo[url]?

Obrigado pela atençao

oi,

substitua a linha 16 para usar o código como falaram

assim o compilador irá saber que na verdade você se refere ao objeto Iterator do pacote java.util e não ao seu objeto

abs

obrigado e todos…abrsç

Não esqueça também de tipar o iterador. Isso evita casts:

[code]package Iterator;

import java.util.*;
/**
*

  • @author desenvolvimento
    */
    public class Iterator
    {
    public static void main(String args[])
    {
    List um = new ArrayList();
    um.add(“A”);
    um.add(“B”);
    um.add(“c”);
    Iterator i1 = um.iterator();
    while(i1.hasNext())
    {
    System.out.println(i1.next());
    }
    }
    }
    [/code]

Essa dica será especialmente importante para outros tipos de objetos, além do String.

Olá amigos, desculpem reviver o tópico.

Não consigo resolver o erro que o codigo abaixo esta gerando, podem me ajudar ? Obrigado

[code]@Override
public void salva() {
crudObj.setBibAcervoxAutoresCollection(autoresL);
for (Iterator it = crudObj.getBibAcervoxAutoresCollection().iterator(); it.hasNext():wink: {
AcervoxAutores acervoxAutores= it.next();
if (acervoxAutores.getAcxautautor() != null) {
acervoxAutores.setAcxautacervo(crudObj);

        }
        System.out.println("Opss!");
    }
    super.salva();
}[/code]

GRAVE: java.lang.ClassCastException: com.systempro.sapiweb.dominio.Autores cannot be cast to com.systempro.sapiweb.dominio.AcervoxAutores javax.faces.event.AbortProcessingException: java.lang.ClassCastException: com.systempro.sapiweb.dominio.Autores cannot be cast to com.systempro.sapiweb.dominio.AcervoxAutores at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:182) at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88) at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769) at javax.faces.component.UICommand.broadcast(UICommand.java:300) at javax.faces.component.UIData.broadcast(UIData.java:1093) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1539) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:98) at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:91) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:162) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:330) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:174) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:828) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:725) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1019) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.ClassCastException: com.systempro.sapiweb.dominio.Autores cannot be cast to com.systempro.sapiweb.dominio.AcervoxAutores at com.systempro.sapiweb.ui.beans.AcervoJsfBean.salva(AcervoJsfBean.java:180) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.sun.el.parser.AstValue.invoke(AstValue.java:234) at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297) at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:43) at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:56) at javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:153) ... 62 more

Agradeço qualquer ajuda;

crudObj.getBibAcervoxAutoresCollection() retorna uma coleção de o quê? AcervoxAutores ou Autores ?

crudObj.setBibAcervoxAutoresCollection(autoresL);

aqui eu seto a minha lista de autores escolhidos no xhtml

a linha que voce pediu retorna uma lista de acervoxautores

É que a mensagem de erro que você postou me diz o contrário (ela diz que pelo menos um elemento da lista que foi retornada é da classe Autores, não AcervoXAutores, e é por isso que houve a ClassCastException. Poderia conferir se realmente essa lista contém objetos dessa classe ou da outra?

o que esta acontecendo e o seguinte:

quando eu seto a lista dos autores que eu escolhi lá no meu acero, quando debugo o codigo do acervo nao esta vindo junto dai na hora de gravar na minha tabela mestre detalhe nao esta dando certo, esta tabela que falei tem tem campos acxatcodigo(codigo automatico), acxatcodacervo(codigo do acervo) e acxatautores(codigos dos autors). Ai eu testo se o codigo é nulo, se sim seto o codigo do objeto(crud) para eele ( ali esta != null, na verdade eh == null )

Bom, sei lá o que está certo, só sei que, por algum motivo, a coleção retornada por getBibAcervoxAutoresCollection() parece ser uma coleção de Autores, não de AcervoxAutores . Pelo menos é isso que diz a mensagem de erro. Poderia debugar seu código e ver o que getBibAcervoxAutoresCollection() realmente retorna?

já posto o resultado do debug.

esta me retornando os dados de acervo sem o codigo e uma lista de autores, os quais eu escolhi.

tem alguma ideia de como posso resolver esse problema para continuar meu projeto ? :smiley:

[quote=ViniGodoy]Não esqueça também de tipar o iterador. Isso evita casts:

[code]package Iterator;

import java.util.*;
/**
*

  • @author desenvolvimento
    */
    public class Iterator
    {
    public static void main(String args[])
    {
    List um = new ArrayList();
    um.add(“A”);
    um.add(“B”);
    um.add(“c”);
    Iterator i1 = um.iterator();
    while(i1.hasNext())
    {
    System.out.println(i1.next());
    }
    }
    }
    [/code]

Essa dica será especialmente importante para outros tipos de objetos, além do String.[/quote]

evitar a execção cast, isso mesmo que eu preciso. pf me explique pq a mesma ocorre. abraço