web-dev-qa-db-fra.com

Output ArrayList to String sans que [] (parenthèses) apparaisse

OK, j'ai donc une liste de tableaux que je dois renvoyer sous forme de chaîne. En ce moment, j'utilise cette approche:

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;
}

Cela fonctionne bien, mais le problème est que je trouve des crochets autour du texte. Je reçois des choses comme:

 Customer list:
 --------------
 [Name: Last, First
 , Name: Last, First
 , Name: Last, First
 ]

Quand je veux quelque chose comme ça:

 Customer list:
 --------------
 Name: Last, First
 Name: Last, First
 Name: Last, First

Cependant, contrairement aux questions similaires, je ne veux pas simplement produire un résultat ligne par ligne. Je dois stocker ArrayList dans une chaîne sans les crochets pour pouvoir l'utiliser.

EDIT: Il convient de noter que la virgule de la version à laquelle je veux ressembler a été placée par une méthode dans une classe différente:

public final String getName()  
    { 
        return getLast() + ", " + getFirst(); 
    }

EDIT 2: J'ai pu trouver une solution complète en adaptant les deux réponses qui m'ont été données. Il était difficile de décider quelle était la "réponse" car je trouvais les deux utiles, mais je choisirais celle que je pourrais utiliser de manière plus sélective.

public String customerList() 
{
    String list = Arrays.toString(customers.toArray()).replace(", N", "N").replace(", N", "N");
    return list.substring(1,list.length()-1);
}

Pour supprimer les crochets, j'ai utilisé la déclaration modifiée. Supprimer la virgule m'a obligé à me concentrer sur le fait que chaque ligne commence par un "N", mais l'inconvénient de cette approche est que le code se briserait si j'oublie de le modifier ici si je le modifie ici. Néanmoins, cela résout mon problème spécifique et je peux toujours me noter dans les deux cas, si nécessaire.

10
Elliander

Vous pouvez essayer de remplacer les '[' et ']' par des espaces vides

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

Peut convertir directement list/set en string et effectuer une action dessus

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

Une solution possible est:

String account = Arrays.toString(accounts.toArray()); 
return account.substring(1,account.length()-1);

Ou remplacez-vous la méthode toString pour renvoyer la chaîne selon vos souhaits.

2
Rodrigo Gomes

Vous pouvez utiliser la méthode substring () pour supprimer les crochets de début et de fin sans altérer les entrées de ArrayList . J'ai utilisé quelque chose comme ceci pour convertir un ArrayList<String> en String. 

String str = list.toString().substring(1, list.toString().length() - 1);
1
Dheeraj vats

Si vous voulez que votre sortie ressemble à: item1, item2, item3

Arrays.toString(customers.toArray()).replace('[', ' ').replace(']', ' ').trim()

Si vous voulez que votre sortie ressemble à ceci: item1 item2 item3

Arrays.toString(customers.toArray()).replace('[', ' ').replace(']', ' ').replace(',', ' ').trim()
1
Thev

Vous pouvez remplacer la méthode toString () et représenter la sortie dans le format de votre choix.

0
Shivendra Pratap

Version Java 8

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(",")));

Sortie: 1,2,4

0
yejianfengblue