# Byte- List mit einem Iterator durchlaufen



## Gast (14. Aug 2008)

hallo,

ich möchte eine Byte- List durchlaufen und immer 2 Byte herausnehmen:


```
public void analyse(List<Byte> buffer) {              
        Iterator<Byte> it = buffer.iterator();
        while(it.hasNext()) {
            Byte next1 = it.next();
            Byte next2 = it.next();  // da bekomme ich zum Schluss eine Exception, weil kein next mehr vorhanden ist
```

Wie kann ich das besser machen? Hat da jemand eine idee, noch dazu möchte ich nur die ersten 32 Byte durchlaufen, in der Liste sind aber bis zu 1000Byte drinnen,


----------



## lhein (14. Aug 2008)

Ich weiss zwar nicht, warum Du immer 2 Bytes auf einmal lesen willst, aber Du kannst auch durchaus eine for Schleife verwenden....z.b. 

```
for (int cnt=0; cnt<32; cnt+=2)
{
    ...
}
```


----------



## SchonWiederFred (14. Aug 2008)

Die Exception bekommst Du, wenn Du eine ungerade Anzahl von Elementen in der Liste drin hast.

Workaround:

```
while(it.hasNext())
{
    Byte next1 = it.next();
    if (!it.hasNext()) break;
    Byte next2 = it.next();
```


----------



## Leroy42 (14. Aug 2008)

So wärs ein bischen schneller.


```
while(it.hasNext()) 
{ 
    if (!it.hasNext()) break; 
    Byte next1 = it.next(); 
    Byte next2 = it.next();
}
```

(  )


----------



## Wildcard (14. Aug 2008)

Schneller ja, funktioniert aber nicht, weil hasNext immer vom aktuellen Pointer ausgeht.


----------



## SchonWiederFred (14. Aug 2008)

Wildcard hat gesagt.:
			
		

> Schneller ja


Nö. Das if wäre an der Stelle einfach komplett sinnlos. Die Bedingung kann dort niemals wahr sein, weil das while sonst ja gar nicht in den Schleifenkörper reingegangen wäre.


----------

