OK, ich habe also eine ArrayList, die ich als String zurückgeben muss. Im Moment verwende ich diesen Ansatz:
List<Customer> customers = new ArrayList<>();
List<Account> accounts = new ArrayList<>();
public String customerList()
{
String list = Arrays.toString(customers.toArray());
return list;
}
public String accountList()
{
String account = Arrays.toString(accounts.toArray());
return account;
}
Das funktioniert gut, aber das Problem ist, dass der Text in Klammern steht. Ich bekomme Sachen wie:
Customer list:
--------------
[Name: Last, First
, Name: Last, First
, Name: Last, First
]
Wenn ich so etwas will:
Customer list:
--------------
Name: Last, First
Name: Last, First
Name: Last, First
Im Gegensatz zu ähnlichen Fragen möchte ich jedoch nicht einfach nur Zeile für Zeile ausgeben. Ich muss die ArrayList in einem String ohne die Klammern speichern, damit ich damit arbeiten kann.
EDIT: Es sollte beachtet werden, dass das Komma in der Version, in der es aussehen soll, von einer Methode in einer anderen Klasse eingefügt wurde:
public final String getName()
{
return getLast() + ", " + getFirst();
}
EDIT 2: Ich konnte eine komplette Lösung finden, indem ich die zwei Antworten, die ich erhielt, anpasste. Es war schwierig zu entscheiden, welche "Antwort" war, weil ich beides nützlich fand, ging aber mit der ein, die ich gezielter verwenden konnte.
public String customerList()
{
String list = Arrays.toString(customers.toArray()).replace(", N", "N").replace(", N", "N");
return list.substring(1,list.length()-1);
}
Um die Klammern zu entfernen, habe ich den modifizierten Return verwendet. Um das Komma zu entfernen, musste ich mich auf die Tatsache konzentrieren, dass jede Zeile mit einem "N" beginnt. Der Fehler in diesem Ansatz besteht jedoch darin, dass der Code brechen würde, wenn ich vergesse, ihn hier zu ändern, wenn ich ihn dort ändere. Trotzdem löst es mein spezifisches Problem, und ich kann mich an beiden Orten bei Bedarf notieren.
Sie könnten versuchen, '[' und ']' durch Leerzeichen zu ersetzen
String list = Arrays.toString(customers.toArray()).replace("[", "").replace("]", "");
Kann Liste/String direkt konvertieren und Aktionen ausführen
customers.toString().replace("[", "").replace("]", "")
Eine mögliche Lösung ist:
String account = Arrays.toString(accounts.toArray());
return account.substring(1,account.length()-1);
Oder überschreiben Sie die toString
-Methode, um den String wie gewünscht zurückzugeben.
Sie können die Methode substring () verwenden, um Start- und Endeklammern zu entfernen, ohne Einträge in der ArrayList zu manipulieren Ich habe etwas Ähnliches verwendet, um einen ArrayList<String>
in einen String zu konvertieren
String str = list.toString().substring(1, list.toString().length() - 1);
Wenn Sie möchten, dass Ihre Ausgabe folgendermaßen aussieht: item1, item2, item3
Arrays.toString(customers.toArray()).replace('[', ' ').replace(']', ' ').trim()
Wenn Sie möchten, dass Ihre Ausgabe folgendermaßen aussieht: item1 item2 item3
Arrays.toString(customers.toArray()).replace('[', ' ').replace(']', ' ').replace(',', ' ').trim()
Sie können die toString () -Methode überschreiben und die Ausgabe in einem beliebigen Format darstellen
Java 8-Version
List<Integer> intList = new ArrayList<Integer>();
intList.add(1);
intList.add(2);
intList.add(4);
System.out.println(intList.stream().map(i -> i.toString()).collect(Collectors.joining(",")));
Ausgabe: 1,2,4