Більшість колекцій є корисними toString()
в java в наші дні (Java7 / 8). Тому немає необхідності робити потокові операції, щоб об'єднати те, що потрібно, просто переосмислитиtoString
свій клас цінностей у колекції, і ви отримаєте те, що вам потрібно.
і AbstractMap, і AbstractCollection реалізують toString (), викликаючи toString на елемент.
нижче - тестовий клас із прояву поведінки.
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
public class ToString {
static class Foo {
int i;
public Foo(int i) { this.i=i; }
@Override
public String toString() {
return "{ i: " + i + " }";
}
}
public static void main(String[] args) {
List<Foo> foo = new ArrayList<>();
foo.add(new Foo(10));
foo.add(new Foo(12));
foo.add(new Foo(13));
foo.add(new Foo(14));
System.out.println(foo.toString());
// prints: [{ i: 10 }, { i: 12 }, { i: 13 }, { i: 14 }]
Map<Integer, Foo> foo2 = new HashMap<>();
foo2.put(10, new Foo(10));
foo2.put(12, new Foo(12));
foo2.put(13, new Foo(13));
foo2.put(14, new Foo(14));
System.out.println(foo2.toString());
// prints: {10={ i: 10 }, 12={ i: 12 }, 13={ i: 13 }, 14={ i: 14 }}
}
}
AbstractCollection@toString
(і таким чиномString + Stack
) вже друкує його так, як вам хочеться.