it-swarm.com.de

Ausgabe ArrayList in String ohne [] (Klammern)

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.

10
Elliander

Sie könnten versuchen, '[' und ']' durch Leerzeichen zu ersetzen

String list = Arrays.toString(customers.toArray()).replace("[", "").replace("]", "");
19
bmarkham

Kann Liste/String direkt konvertieren und Aktionen ausführen

customers.toString().replace("[", "").replace("]", "")
3
Saurabh Mittal

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.

2
Rodrigo Gomes

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);
1
Dheeraj vats

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()
1
Thev

Sie können die toString () -Methode überschreiben und die Ausgabe in einem beliebigen Format darstellen

0

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

0
yejianfengblue