it-roy-ru.com

Вывести ArrayList в строку без появления [] (скобок)

Итак, у меня есть ArrayList, который мне нужно вернуть как String. Прямо сейчас я использую этот подход:

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

Это отлично работает, но проблема в том, что я получаю скобки вокруг текста. Я получаю такие вещи, как:

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

Когда я хочу что-то вроде этого:

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

Однако, в отличие от похожих вопросов, я не просто хочу выводить построчно. Мне нужно хранить ArrayList в строке без скобок, чтобы я мог работать с ним.

Правка: Следует отметить, что одна запятая в версии, на которую я хочу, чтобы она выглядела, была помещена туда методом в другом классе:

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

Правка 2: Я смог найти полное решение, адаптировав два ответа, которые мне дали. Было трудно решить, какой был «ответ», потому что я нашел оба полезных, но согласился с тем, который мог бы использовать более избирательно.

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

Для снятия скобок я использовал модифицированный возврат. Удаление запятой потребовало от меня сосредоточения на том факте, что каждая строка будет начинаться с буквы «N», но недостаток в этом подходе состоит в том, что код сломается, если я забуду изменить его здесь, если я изменю его там. Тем не менее, это решает мою конкретную проблему, и я всегда могу записать себя в обоих местах по мере необходимости.

10
Elliander

Вы можете попробовать заменить '[' и ']' на пустое место

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

Может напрямую преобразовывать список/набор в строку и выполнять над ней действия

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

Возможные решения:

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

Или вы переопределяете метод toString, чтобы вернуть строку в соответствии с вашими требованиями.

2
Rodrigo Gomes

Вы можете использовать метод substring () для удаления начальных и конечных скобок, не изменяя никаких записей в ArrayList . Я использовал что-то вроде этого для преобразования ArrayList<String> в String 

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

Если вы хотите, чтобы ваш вывод выглядел следующим образом: item1, item2, item3

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

Если вы хотите, чтобы ваш вывод выглядел следующим образом: item1 item2 item3

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

Вы можете переопределить метод toString () и представить вывод в любом формате, который вы

0
Shivendra Pratap

Версия 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(",")));

Результат: 1,2,4

0
yejianfengblue