[list1[i] + list2[i] for i in range(len(list1))]
Вероятно, вы вызываете System.out.println для печати списка. JavaDoc говорит:
This method calls at first String.valueOf(x) to get the printed object's string value
Скобки добавлены в реализацию toString
ArrayList. Чтобы удалить их, вы должны сначала получить строку:
String errorDisplay = errors.toString();
, а затем разделите скобки, что-то вроде этого:
errorDisplay = errorDisplay.substring(1, errorDisplay.length() - 1);
Неправильная практика зависит от реализация toString()
. toString()
предназначен только для создания читаемого человеком представления для ведения журналов или отладки. Поэтому лучше построить строку самостоятельно во время итерации:
List<Integer> errors = new ArrayList<>();
StringBuilder sb = new StringBuilder();
for (int x = 1; x<10; x++) {
errors.add(x);
sb.append(x).append(",");
}
sb.setLength(sb.length() - 1);
String errorDisplay = sb.toString();
Обратите внимание, что это не массив, а только строка, отображающая содержимое списка. Чтобы создать массив из списка, вы можете использовать list.toArray () :
// create a new array with the same size as the list
Integer[] errorsArray = new Integer[errors.size()];
// fill the array
errors.toArray(errorsArray );
Короткий ответ: System.out.println(errors.toString().substring(1, errors.toString().length() - 1))
Объяснение: когда вы вызываете System.out.println(obj)
с Object
в качестве параметра, напечатанный текст будет результатом obj.toString()
. ArrayList.toString()
реализуется таким образом, чтобы он представлял его содержимое между скобками []
в разделенной запятой конкатенации каждого из содержащихся элементов (их .toString()
представление также).
Это не хорошая практика полагаться на реализацию другого класса toString()
. Вы должны использовать свой собственный способ форматирования вашего результата.
Скобки, которые вы видите, являются просто автоматическим способом отображения списка в JAVA (например, при использовании System.out.println(list);
.
Если вы не хотите, чтобы они отображались при его показе, вы можете создать custom method:
public void showList(List<Integer> listInt)
{
for(int el : listInt)
{
System.out.print(el + ", ");
}
}
Затем настройте этот код, чтобы показать это по своему вкусу!
Скобки на самом деле не входят в список, это просто представление списка. Если какой-либо объект переходит в вывод String, вызываются объекты toString (). В случае ArrayList этот метод доставляет содержимое списка, заключенного в эти скобки.
Если вы хотите напечатать свой ArrayList без скобок, просто перебирайте его и печатайте.
Если вы печатаете свой список ошибок, он будет внутренне вызывать метод toString()
вашего списка, и этот метод добавит скобки. Есть несколько возможностей. Вы можете получить String с помощью метода toString()
, чтобы удалить скобки из String. Или вы пишете свой собственный метод для печати списка.
public static <T> void printList(List<T> list)
{
StringBuilder output = new StringBuilder();
for(T element : list)
output.append(element + ", ");
System.out.println(output);
}
Это ArrayList
из Integer
. Этот ArrayList
не может содержать символ типа '['
. Но вы можете удалить из него Integer
так:
error.remove(3);
String text = errors.toString().replace("[", "").replace("]", "");//remove brackets([) convert it to string
В вашем списке нет скобок. Это как раз то, как Java печатает список по умолчанию.
Если вы хотите распечатать содержимое своего списка, вы можете что-то вроде этого
for (Integer error : errors) {
System.out.format("%d ", error);
}
System.out.println(error.toString().substring(1, error.toString().length()-1));
Это сработало для меня