이것은 매우 간단한 질문입니다. 때 그렇게처럼 LinkedList의를 인쇄 :Java : 대괄호없이 LinkedList를 인쇄 하시겠습니까?
System.out.println(list);
을 그것은이 같은 대괄호 목록 주변, 그것을 밖으로 인쇄 :
[thing 1, thing 2, thing 3]
을 나는 사각형없이 인쇄 할 수있는 방법이 있나요 괄호?
이것은 매우 간단한 질문입니다. 때 그렇게처럼 LinkedList의를 인쇄 :Java : 대괄호없이 LinkedList를 인쇄 하시겠습니까?
System.out.println(list);
을 그것은이 같은 대괄호 목록 주변, 그것을 밖으로 인쇄 :
[thing 1, thing 2, thing 3]
을 나는 사각형없이 인쇄 할 수있는 방법이 있나요 괄호?
예 - 목록을 반복하여 인쇄하십시오 (각 요소 다음에 쉼표가 붙은 있지만 마지막 요소). 그러나 유틸 도움이 있습니다 :
Guava :
String result = Joiner.on(", ").join(list);
String result = StringUtils.join(list, ", ");
그리고 하나의 참고 사항 : 모든 개체의 .toString()
방법에 의존하지 않습니다. 객체를 사용자에게 표시하거나 미리 정의 된 형식으로 사용하기위한 것이 아니라 주로 디버깅 용도로 사용됩니다.
더러운 빠른과 대답은 다음과 같습니다
String s = list.toString();
System.out.println(s.substring(1, s.length()-1));
는 "신속하고 더러운"면책 조항을 포함하기 때문에, I 당신의 대답을 하향 회하지 않을 것입니다. 즉, 이것은 정확히 우리가 다른 개발자가하지 말아야 할 물건입니다. –
이 LinkedList의에 있으며, toString()의 기본 구현입니다. LinkedList를 확장하여 자신 만의 구현을 제공하거나 컴포지션을 사용하고 java.util.List 인터페이스를 구현할 수 있습니다.
public class MyLinkedList<E> implements List<E>
{
private final List<E> delegate;
public MyLinkedList(List<E> list)
{
delegate = list;
}
/**
* @return see overriden class or implemented interface
* @see java.lang.Object#toString()
*/
@Override
public String toString()
{
return "My special toString() method";
}
// implement rest of the java.util.List interface
당신은 LinkedList
를 서브 클래 싱하고 toString()
메소드의 오버라이드 (override)하지만, 그건 좀 지나친 것 같다 수 있습니다. 대신 요소를 반복하고 StringBuilder
또는 StringBuffer
(동시성이 문제가되는 경우) 중 하나로 String
을 구성하십시오.
참고 : 나는 그 구현에 의존하기 때문에, 깨지기 쉬운 이후 당신이 @Sean Owen에서 제공하는 답을 따르지 않는 것이 좋습니다
.
는 AbstractCollection.java
에서 수정 된 항목 :
/*
* @return a string representation of a collection
*/
public static final String collectionToString(Collection c) {
Iterator<E> it = c.iterator();
if (! it.hasNext())
return "";
StringBuilder sb = new StringBuilder();
for (;;) {
E e = it.next();
sb.append(e == c ? "(this Collection)" : e);
if (! it.hasNext())
return sb.toString();
sb.append(',').append(' ');
}
}
StrBuilder builder = new StrBuilder(); // apache commons lang.
for (Object object : yourList)
{
builder.appendSeperator(", ");
builder.append(object.toString());
}
System.out.println(builder.toString());
당신은 .toString()
메소드에 의해 반환되는 문자열을 잡고 첫 번째와 마지막 문자를 제거하거나 자신의 목록 클래스를 만들고 통해 반복하는 .toString()
방법을 대체 할 수 있습니다 목록을 작성하고 괄호없이 요소를 인쇄하십시오.
List<String> list = new List<String>() {
public String toString() {
// Custom To String Stuff Here
}
};
을 물론 내가 너무 느린 해요 : 또는 당신은 같은 익명의 클래스로 그것을 할 수 있습니다.당신이 끝내에 경우
, 그냥 이렇게 아무것도 가져올 필요가 없습니다 :
list = ["thing 1", "thing 2", "thing 3"]
println list.collect { i -> "$i" }.join(', ')
일 1 일 2 일 3
지도 수집과 동일 함 :
map = [I:"James Bond", love:"rock N roll", id:"007"]
println map.collect { k,v -> "$k = $v" }.join('\n')
I = 제임스 본드
사랑 = 바위 N 롤
ID = 007
이 유틸리티에는 +2가 필요하고'toString() '비트가 필요합니다. –
StringUtils의 가져 오기는 무엇입니까? – Blackvein
Nevermind 발견 : 감사합니다! – Blackvein