User tanzwud
tanzwud
34 уровень

ArrayList как можно безболезненно @Override toString()

Статья из группы Архив info.javarush.ru
Недавно столкнулся с проблемой, если писать System.out.println(list); то вывод будет всегда в скобках и через запятую. Понятно что можно вывести через loop и тп, но хочется переписать именно toSting(). Пока нашел только возможность написать новый класс и extend ArrayList. Вот собственно код /* Work with ArrayList 98 51 53 37 50 [98, 51, 53, 37, 50] 99 54 45 0 77 // extended ArrayList need to find how to override method for ArrayList */ package beginning.basics.toStringOvveride; import java.util.ArrayList; import java.util.Iterator; /** * User: IvanKo * Date: 22.10.13 */ public class Override_3_ArrayList { public static void main(String[] args) { ArrayList list = list(); System.out.println(listToString(list)); System.out.println(list); System.out.println(myList()); } public static ArrayList list() { ArrayList list = new ArrayList(); while (list.size() < 5){ int x = (int)(Math.random() * 100) ; list.add(x); } return list; } public static MyArrayList myList(){ MyArrayList myList = new MyArrayList(); while (myList.size() < 5){ int x = (int)(Math.random() * 100) ; myList.add(x); } return myList; } public static String listToString(ArrayList list) { String result = ""; for (int i = 0; i < list.size(); i++) { result += " " + list.get(i); } return result; } public static class MyArrayList extends ArrayList { private static final long serialVersionUID = 1L; @Override public String toString() { if (isEmpty()) { return ""; } StringBuilder buffer = new StringBuilder(size() * 16); buffer.append(' '); Iterator it = iterator(); while (it.hasNext()) { Object next = it.next(); if (next != this) { buffer.append(next); } else { buffer.append("(this Collection)"); } if (it.hasNext()) { buffer.append(" "); } } buffer.append(' '); return buffer.toString(); } } } Есть методы попроще?
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ