Announcement

Collapse
No announcement yet.

Iterator

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Iterator

    Hallo ,
    ich hoffe ich bin im richtigen Unterforum, habe kein passendes gefunden.

    habe eine Funktion und bekomme folgendem Fehler:

    "at java.util.Hashtable$Enumerator.next(Unknown Source)"

    Code:
    Hashtable <String, ModelElement> tableElem = new Hashtable<String, ModelElement>();
    	     tableElem = model.getElements();
    
     for (ModelElement element : model.getElements().values()) 
    	        {
    			 if (element.getClass().getName().equalsIgnoreCase("sys4sim.internal_model.Source"))
    				{
    				 
    				    ArrayList<Connector> outList = new ArrayList<Connector>();
    					outList = ((ModelBlock)element).getOut();
    					 for ( Iterator<Connector> i = outList.iterator(); i.hasNext(); )
    				     {
    						    //erzeuge Buffer
    						    zsourcebuffer+=1;
    						    sys4sim.internal_model.Queue queue = new sys4sim.internal_model.Queue();
    							queue.setCapacity(10000);
    							queue.setName("sourcebuffer"+String.valueOf(zsourcebuffer));
    							tableElem.put("sourcebuffer"+String.valueOf(zsourcebuffer), queue);
    				 	        // Connector abändern
    							Connector s = i.next();
    							ModelBlock z = s.getTarget();
    				 	        s.setTarget(queue);
    				 	        s.setTargetName(queue.getName());
    				 	        //neuen Connector zwischen Buffer und Elziel erzeugen
    				 	       sys4sim.internal_model.Connector con = new sys4sim.internal_model.Connector();
    				 	       con.setSource(queue);
    				 	       con.setSourceName(queue.getName());
    				 	       con.setTarget(z);
    				 	       con.setTargetName(z.getName());
    				 	      tableElem.put("Con"+String.valueOf(zsourcebuffer), con);
    				 	       //neues Teil in Buffer get.out schreiben
    				 	       queue.getOut().add(con);
    				     	
    				     }
    					
    					
    				}
    			    
    	        }
    		 //tableElem = model2.getElements();
    		 model.setElements(tableElem);
    Verstehe nicht warum die Fehlermeldung kommt

    wenn ich die zeilen

    tableElem.put("sourcebuffer"+String.valueOf(zsourc ebuffer), queue);
    und
    tableElem.put("Con"+String.valueOf(zsourcebuffer), con);

    raus nehme kommt der Fehler nicht

    Es liegt also daran dass der Itterator nicht mit dem put Befehl klar kommt owohl der Iterator ja über die Hashtable vom model geht und der put Befehl auf die Hashtable tableElem angewendet wird. Würde ich die Table von model putten über die er itteriert würde ich Fehler verstehen da ja dann die Anzahl anders ist.

    Kann mir vielleicht jemand helfen?

  • #2
    Bei der Nutzung von Enumerationen (in welcher Art auch immer) können keine Befehle zum löschen (remove) oder einfügen (put) in diese genutzt werden
    Christian

    Comment


    • #3
      Hallo Christian
      vielen Dank, jetzt weiß ich bescheid. Hat mir geholfen aus der Zwickmühle zu kommen

      Comment


      • #4
        fein, freut mich

        :-)
        Christian

        Comment

        Working...
        X