ArrayList<Byte> in String umwandeln

seblin

Mitglied
Hallo,

ich habe eine `ArrayList`, die aus Bytewerten besteht und möchte daraus einen String erzeugen.

Bisher mache ich das so (die Signatur nimmt bewusst den abstrakten Listentyp an):

Java:
private String bytelisteAlsString(List<Byte> byteliste) {
        
        byte[] bytearray = new byte[byteliste.size()];
        int index = 0;
        
        for (byte bytewert : byteliste) {
            bytearray[index] = bytewert;
            index++;
        }
        
        return new String(bytearray);
}

Geht das irgendwie schöner? Ich habe es schon mit der Methode `.toArray()` auf der Liste probiert, aber da kann ich nur ein Array vom Typ `Byte[]` (also die Wrapperklasse) übergeben, wodurch der Konstruktor von `String()` meckert (soweit geht das Unboxing in Java dann offenbar doch nicht). Würde ich jetzt über eine `for`-Schleife gehen, um mir den `byteValue()` des Wrappers zu holen, dann bin ich ja fast genau so weit wie bei meiner jetzigen Lösung. Gibt es noch irgendeine andere Möglichkeit dafür?
 
Eigentlich sollte das reichen: (ungeprüft)
Java:
private String bytelisteAlsString(List<Byte> byteliste) {
        String neu=""; 
        for (byte bytewert : byteliste)  neu += bytewert;
        return neu;
}
 
Danke euch beiden. Das sieht immerhin nicht mehr ganz so lowlevelmäßig aus.

Und man darf (wie gezeigt) in der Tat das Casten nicht vergessen... 😉
 
Besser wäre allerdings noch nen StringBuilder zu verwenden. Sonst erzeugst du ne ganze Menge unnötiger Strings.
 
@EikeB: In diesem Fall ist es ne Programmieraufgabe für's Studium und wir dürfen nichts benutzen, was wir nicht in der Vorlesung hatten. Grundsätzlich aber danke für den Tipp. Unabhängig von der Programmiersprache würde auch ich immer probieren, Strings mit den Möglichkeiten der jeweiligen Sprache in einem Rutsch zusammenzufügen. Von Python kommend, weiß ich halt manchmal noch nicht, ob Java etwas von Haus aus nicht kann oder ob ich nur nicht weiß, wie es geht. 😉

(Und nein, das soll kein Flamewar werden... *g*)
 

Neue Themen


Zurück
Oben