# Vector Elemente auslesen



## Pir0xx (16. Jan 2009)

Huhu, ich steh hier vor nemm kleinen Problem bei dem ich nicht weiss wie ich es lösen soll.

Ich habe ein Vector Element, welches ich vorher befülle,

jetzt möchte ich das 9te Elemente auslesen, welches ich als String brauch


```
String ID = vo.elementAt(9);
```

bekomme jedoch die meldeung
"Incompatible types"
"requierd: Java.lang.String"
"found: "Java.lang.Object"

wie kann ich dieses Element in einen String umwandeln?
mit der toString()  Methode bekomm ich ja den ganzen Vector als String


----------



## L-ectron-X (16. Jan 2009)

In Java-Versionen bis 1.5 hat man immer sowas mit einem Cast gemacht.

```
String id = (String)vo.elementAt(9); //alternativ mit get(int i)
```

Ab 1.5 hat man nun auch die Möglichkeit, das sicherer über Generics zu machen - ein Cast birgt immer das Risiko einer ClassCastException. Diese tritt auf, wenn versucht wird auf einen anderen Objekt-Typ zu casten, als man gerade im Zugriff hat.
Mit Generics ganz anders. Hier wird schon vom Compiler geprüft, ob die Typsicherheit gegeben ist.

Dazu musst du bereits den Vector entsprechend deklarieren:

```
Vector<String> v = new Vector<String>();
```
bedeutet, dass der Vector nur noch Strings aufnehmen kann. Wird versucht ein anderes Objekt im Code einzufügen, wird sich der Compiler beschweren und kein Compilat erzeugen.

Aus einem so "präparierten" Vector werden die Daten dann so geholt:

```
String str = v.get(i); //es ist sicher, dass hier ein String geholt wird
```


----------



## Murray (16. Jan 2009)

Pir0xx hat gesagt.:
			
		

> Ich habe ein Vector Element, welches ich vorher befülle,
> 
> jetzt möchte ich das 9te Elemente auslesen, welches ich als String brauch



Da der Index beim Vector null-basiert ist, wäre das 9. Element aber 

```
elementAt(8)
```

Wie wird der Vector denn befüllt? Stecken da Strinbg-Objekte drinn? Dann hilft der Cast. Ansonsten müsstest am zurückgelieferten Element die toString()-Methode aufrufen.


----------



## Pir0xx (16. Jan 2009)

elementAt(9)
war schon richtig, allerdings meint ich auch das 10 elemte, hatte nur schon umgedacht 

ich hab mich jetzt für die variante mit dem 
Vector<String> v = new Vector<String>();
entschieden und funktioniert super, danke


----------



## Landei (16. Jan 2009)

Vector ist veraltet. Das hier ist die "übliche" Version:

```
List<String> v = new ArrayList<String>();
...
v.add("Bla");
...
String s = v.get(0);
```


----------



## Akunin (22. Jan 2009)

hi, ich hab da nenn ähnliches Problem, allerdings mit Integer

ich will mein erstes vector element als Integer haben.

allerdings wenn ich das über nenn Cast machen will , bekomm ich die Meldung "incompatible types"


```
int WAZeit = (Integer)wa.elementAt(0);
```

wie muss ich das machen damit er es richtig umwandelt?


----------



## Templon (22. Jan 2009)

@Akunin

Wenn du Java 1.5 oder höher hast, kannst du das einfach so machen:


```
Vector<Integer> wa = new Vector<Integer>(); //Besser wäre aber ArrayList - post vom Landei lesen
wa.add(42);
int i = wa.get(0);
```

Dank Autoboxing funktioniert das.


----------



## Gast (22. Jan 2009)

Was bedeutet "veraltet"? 

Ist ArrayList state-of-the-art?


----------



## Pir0xx (22. Jan 2009)

Hi, ich hab hier auch wieder nenn kleines Problem dazu


```
Vector waz = MITdoc.getItemValue("MIT_WAZnow");                // füllt den Vector
String WAZStr = (String)waz.elementAt(0);
double doublewert = Double.valueOf(WAZStr).doubleValue();
double WAZnow = timediff + doublewert;
MITdoc.appendItemValue("MIT_WAZnow", WAZnow);              //schreib die double Zahl in das Dokument
MITdoc.save();                                                                    // speichert das Dokument
```

nun zum Problem, mein Element(0) ist eine double Zahl, die ich aus nun auslese und mit einer Anderen verrechnen muss.

ich arbeite mit Lotus Notes und dort gibs noch ne etwas andere API, daher einfach die Zeilen 2,5,6 nicht wirklich beachten

so wie ich es jetzt gepostet hab, bekomm ich zwar kein Fehler beim kompilieren, aber wenn ich es dann durchlaufen lass bekomm ich die Meldung "Java.lang.ClassCastException: java.lang.Double incompatible with java.lang.String"

aber als double kann ich die nicht wirklich aus dem vector auslesen, bzw ich mach was falsch, habt ihr nenn tipp für mich?


----------



## Guest (22. Jan 2009)

Zeile 2,67 meinte ich


----------

