# Länge einer Enumeration feststellen



## Guest (2. Jan 2008)

Für eine Enumeration gibt es leider weder eine Methode size nocht length. Wie kann ich denn die Länge einer Enumeration ermitteln?


----------



## Gast (2. Jan 2008)

vielleicht könntest du über eine Schleife die Elemente in deiner Enumeration zählen


----------



## SlaterB (2. Jan 2008)

Enum.values().length


----------



## gast (2. Jan 2008)

```
for (Enumeration el=v.elements(); el.hasMoreElements(); ) 
{
     //zählen der Elemente  
     System.out.println((String)el.nextElement());
}
```


----------



## Guest (2. Jan 2008)

Klar ginge das... aber ich kann mir nicht vorstellen das das die Ideallösung ist  ???:L


----------



## Guest (2. Jan 2008)

> Enum.values().length



Die Zeile verstehe ich nicht. Die Methode values existiert doch garnicht für Enumeration?


----------



## ARadauer (2. Jan 2008)

ich bin der meinung, dass lösungen, die auf den ersten blick jeder versteht, bei denen weniger als 5 kb speicher verbraucht werden und die nicht länger als 50 ms dauern, ideal sind


----------



## SlaterB (2. Jan 2008)

ach Enumeration wie Iterator und nicht Enum 
http://java.sun.com/javase/6/docs/api/java/lang/Enum.html

gut, da gibt es nichts außer der Schleife,
aber da benötigt man ja auch in der Regel nicht die Anzahl,

was ist denn der Einsatz?


----------



## Guest (2. Jan 2008)

Ich benötige die Länge der Enumeration um die erste Dimension des zweidimensionalen Arrays festzulegen. Außerdem müßte ich in der Schleife irgendwie Zugriff auf den aktuellen Index haben. Ne Ahnung wie ich das am besten umsetze?


```
<%@ page import="eigeneKlassen.*, java.util.*" %>

<%    
     Test ds = new Test();	
     Enumeration e = request.getParameterNames();
     String[][] sar = new String[e.][2];

     for (e = request.getParameterNames(); e.hasMoreElements();) 
     {
    	 e.nextElement();
    	 
    	 // in Array [i][0] den Parameternamen eintragen
    	 // in Array [i][1] den Parameterwert eintragen
     }
         
     ds.behaelterSammlungErzeugen(sar);
 %>
```


----------



## ARadauer (2. Jan 2008)

wie gesagt, die teile zählen, das wird der benutzer auch bei 10000 parametern zeitlich nicht merken, geht ratz fatz und jeder versteht den code. nur weil code plump aussieht, heißt, das nicht, das er schlecht ist <- meine meinung


----------



## Beni (2. Jan 2008)

Oder schreib das Zeugs zuerst in eine Liste (ArrayList, LinkedList), und wandle die Liste allenfalls in einen Array um (List#toString).


----------



## Guest (2. Jan 2008)

gut du hast mich überzeugt


----------



## maki (2. Jan 2008)

Scriplets in JSP sind immer Plump!


----------



## SlaterB (2. Jan 2008)

an dieser Stelle bist du der begrenzten API ausgesetzt, da muss es eben sein,
die Schleife gehört aber je nach Schönheitssinn in eine Hilfsklasse:
Helper.getSize(e);
wichtig dabei: danach ne neue Enumeration anfordern, die alte ist ausgelutscht (durchlaufen) 

für das i musst du nebenher i mitzählen, anders gehts bei Enumeration auch nicht

---------

noch schöner: du brauchst weder Gesamtzahl noch i,
für jedes Element fügst du ein String[2] in eine Liste  (z.B. ArrayList) ein,
am Ende hast du die Liste, die für sich ok ist, oder wandelst diese in ein Array um, da gibts eine vorgegebene Operation
(edit: naja, wie Beni schon sagt  )


----------



## Guest (2. Jan 2008)

Kannst ich eine Enumeration direkt in eine ArrayList casten oder geht das nur über ne Schleife?


----------



## SlaterB (2. Jan 2008)

weder noch, was hat Enumeration mit ArrayList zu tun?

dass du die Enumeration durchlaufen kannst und nebenbei irgendwelche Elemente (String[2]) in irgendeine Liste einfügst, wie vorgeschlagen, hat damit jedenfalls wenig zu tun


----------

