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
) уже печатает его так, как вы этого хотите.