Umwandlung string-array zu string und wieder zurück in Java
Ich habe ein array String[] in Java und muss erst codieren/umwandeln in einen String und dann weiter im code verdeckte es wieder auf den String [] - array. Die Sache ist, dass ich jedes Zeichen in einem string in String[] array also ich muss sehr vorsichtig sein bei der Kodierung. Und alle notwendigen Informationen zu Dekodieren, muss es in den endgültigen string zu. Ich kann nicht einen string zurückgeben und einige andere Informationen in einer extra variable.
Mein Algorithmus, den ich entworfen haben, so weit ist es:
-
Fügen Sie die strings nebeneinander, z.B. so:
String[] a = {"lala", "exe", "a"}
in
String b = "lalaexea" -
Anhängen am Ende des Strings die Länge aller strings aus dem String[], getrennt von der Haupt-text durch $ - Zeichen und dann die jeweilige Länge durch ein Komma getrennt, also:
b = "lalaexea$4,3,1"
Dann beim konvertieren es zurück, ich würde Lesen Sie zuerst die Längen von hinten und dann auf Ihnen basieren, die wirkliche strings.
Aber vielleicht gibt es einen einfacheren Weg?
Prost!
- Ich finde deine Idee gut!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nicht wollen, verbringen so viel Zeit mit string-Operationen, die Sie verwenden könnte, die java-Serialisierung + commons-codecs wie diese:
Das liefert die folgende Ausgabe:
Wenn Sie mit maven verwenden, können Sie die folgende Abhängigkeit für die commons-codec:
Wie vorgeschlagen mit base64 (zwei Zeilen ändern):
Im Falle der Base64-der Ergebnis-string kürzer ist, für die Sie den code unten ausgesetzt:
Bezüglich der Zeiten für die einzelnen Ansätze, führe ich 10^5 Ausführungen, jede Methode und das Ergebnis war wie folgt:
Code verwendet für den test:
Verwenden Sie einen Json-parser, wie Jackson zum serialisieren/Deserialisieren eine andere Art von Objekten ebenso wie integer/schwimmt ext in strings und wieder zurück.
Ich würde das symbol zwischen den Wörtern, um Sie später zu verwenden, die
String#split
Methode, um den String zurück. In Ihren$
symbol Beispiel, es wäreBeachten Sie, dass in diesem Beispiel füge ich ein Doppelzimmer
\
vor der$
symbol, da dieString#split
Methode erhält einen regulären Ausdruck als parameter, und die$
symbol ist ein spezielles Zeichen in regex.Zur Unterstützung ein Zeichen in Ihrem
String[]
, es wäre besser, nicht ein einzelnes Zeichen als Trenner, sondern stattdessen eine andereString
. Die Methoden, die verwandeln würde, in diesem:s.replaceAll("\\$", "\\\\\\$");
.String
(und es ist regex, um es zu teilen zurück).Nur mit einem bekannten separator (wie
@
oder#
Anhängen Saiten), dann verwenden Sie yourString.split(yourSeparator), um ein array von es.