나는 인쇄 할 Stack<Integer>
로 잘 이클립스 디버거가하는 (즉, 같은 개체 [1,2,3...]
)하지만, 그것을 인쇄하기 out = "output:" + stack
이 좋은 결과를 반환하지 않습니다.
명확히하기 위해 Java의 내장 컬렉션에 대해 이야기하고 있으므로이를 재정의 할 수 없습니다 toString()
.
인쇄 가능한 멋진 버전의 스택을 얻으려면 어떻게해야합니까?
답변
배열로 변환 한 다음 다음을 사용하여 인쇄 할 수 있습니다 Arrays.toString(Object[])
.
System.out.println(Arrays.toString(stack.toArray()));
답변
String.join(",", yourIterable);
(자바 8)
답변
Java 8 스트림 및 콜렉터를 사용하면 쉽게 수행 할 수 있습니다.
String format(Collection<?> c) {
String s = c.stream().map(Object::toString).collect(Collectors.joining(","));
return String.format("[%s]", s);
}
먼저 map
with Object::toString
를 Collection<String>
사용하여 결합 컬렉터를 사용하여 콜렉션의 모든 항목 ,
을 분리 문자 로 결합합니다 .
답변
Apache Commons 프로젝트에서 제공하는 MapUtils 클래스는 MapUtils.debugPrint
맵을 인쇄 하는 방법을 제공합니다 .
답변
System.out.println (Collection c)은 이미 모든 유형의 컬렉션을 읽을 수있는 형식으로 인쇄합니다. collection에 사용자 정의 오브젝트가 포함 된 경우에만 컨텐츠를 표시하려면 사용자 정의 클래스에서 toString ()을 구현해야합니다.
답변
클래스에서 toString ()을 구현하십시오.
이것을 쉽게하기 위해 Apache Commons ToStringBuilder 를 권장합니다 . 그것으로, 당신은 이런 종류의 방법을 작성해야합니다 :
public String toString() {
return new ToStringBuilder(this).
append("name", name).
append("age", age).
toString();
}
이런 종류의 출력을 얻으려면 :
Person @ 7f54 [이름 = Stephen, 나이 = 29]
또한 반사 구현이 있습니다.