5 Stimmen

Wie konvertiert man List <String> in List <Integer>?

Ich erhalte eine Zeichenfolge von Konstanten in List. Ich brauche List. Auf die einfache Weise werde ich durchlaufen und in Integer umwandeln.

Gibt es eine bessere Lösung?

9voto

f1sh Punkte 10477

Nein, es gibt keine andere Möglichkeit.

Aber Casting ist in diesem Fall nicht möglich, du musst Integer.parseInt(stringValue) verwenden.

List listStrings = ... 
List listIntegers = new ArrayList(listStrings.size());
for(String current:listStrings){
  listIntegers.add(Integer.parseInt(current));
}

6voto

Philipp Punkte 64222

Es gibt einen Weg, dies zu tun.

Sie könnten das Adapter Pattern verwenden und eine Klasse erstellen, die List implementiert, aber intern auf Ihre List zugreift, die Werte zwischen Integer und String umwandelt. Solange Sie alle Verträge erfüllen, wird jede API, die eine List benötigt, mit dieser Klasse genauso arbeiten können wie mit einer nativen List.

Dies mag umständlich und ineffizient erscheinen, aber wenn Sie eine List an eine API übergeben müssen, die nur auf einige Werte der Liste zugreift, kann es effizienter sein, einige davon bei Bedarf umzuwandeln ("lazy evaluation") anstatt alle auf einmal umzuwandeln. Es spart auch Speicherplatz, weil Sie nicht gleichzeitig die String- und Integer-Repräsentation Ihrer gesamten Liste im Speicher haben werden.

1voto

Sajal Dutta Punkte 17354
für(String str : listOfString) {
    listOfInteger.add(Integer.valueOf(str));
}

Es gibt keinen direkten Weg, dies zu tun.

1voto

Amir Pashazadeh Punkte 6910

Schauen Sie sich die Listen Klasse von Google Guava an, Sie können etwas wie folgt tun:

List ergebnis = Lists.transform(stringList, new Function() {
    @Override
    public Integer apply(@Nullable String eingabe) {
        return Integer.parseInt(eingabe)
    }
});

Soweit ich mich erinnere, wird es jedes Element faul transformieren.

1voto

luca.vercelli Punkte 839

Mit Java 8 gibt es eine neue Lösung:

List listOfIntegers = listOfStrings.stream().map(Integer::valueOf).collect(Collectors.toList());

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X