Недавно столкнулся с проблемой, если писать
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();
}
}
}
Есть методы попроще?
tanzwud
34 уровень
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ