Java 배열을 인쇄하는 가장 간단한 방법은 무엇인가요?

Java에서 배열은 toString()을 재정의하지 않으므로 배열을 직접 인쇄하려고 하면 className + '@' + 배열의 hashCode의 헥스가 Object.toString()에 정의된 대로 출력됩니다:

int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(intArray);     // prints something like '[I@3343c8b3'

그러나 일반적으로 우리는 실제로 [1, 2, 3, 4, 5]와 같은 것을 원합니다. 이를 수행하는 가장 간단한 방법은 무엇일까요? 다음은 몇 가지 입력 및 출력 예시입니다:

// Array of primitives:
int[] intArray = new int[] {1, 2, 3, 4, 5};
//output: [1, 2, 3, 4, 5]

// Array of object references:
String[] strArray = new String[] {"John", "Mary", "Bob"};
//output: [John, Mary, Bob]
질문에 대한 의견 (6)
해결책

Java 5부터는 배열 내의 배열에 대해 Arrays.toString(arr) 또는 Arrays.deepToString(arr)를 사용할 수 있습니다. Object[]버전은 배열의 각 객체에 대해.toString()`을 호출한다는 점에 유의하세요. 출력은 사용자가 요청한 정확한 방식으로 꾸며집니다.

예시:

  • 단순 배열:

      String[] array = new String[] {"John", "Mary", "Bob"};
      System.out.println(Arrays.toString(array));

출력합니다:

    [John, Mary, Bob]
  • 중첩 배열:

      String[][] deepArray = new String[][] {{"John", "Mary"}, {"Alice", "Bob"}};
      System.out.println(Arrays.toString(deepArray));
      //출력: [[Ljava.lang.String;@106d69c, [Ljava.lang.String;@52e922]]
      System.out.println(Arrays.deepToString(deepArray));

출력합니다:

    [[John, Mary], [Alice, Bob]]
  • double 배열:

      double[] doubleArray = { 7.0, 9.0, 5.0, 1.0, 3.0 };
      System.out.println(Arrays.toString(doubleArray));

출력합니다:

    [7.0, 9.0, 5.0, 1.0, 3.0 ]
  • int 배열:

      int[] intArray = { 7, 9, 5, 1, 3 };
      System.out.println(Arrays.toString(intArray));

출력합니다:

    [7, 9, 5, 1, 3 ]
해설 (9)

항상 표준 라이브러리를 먼저 확인하세요. 시도해 보세요:

System.out.println(Arrays.toString(array));

또는 배열에 다른 배열이 요소로 포함되어 있는지 확인하세요:

System.out.println(Arrays.deepToString(array));
해설 (3)

그러나 항상 &quot 대해 아는 것이 좋다, 표준 라이브러리를 first&quot 확인합니다. # 39 의 i& 귀의하지않는다고 그 트릭 (myarray) '' 라이s.토스트링 발견했다; d

  • 때부터 myarray 유형에 따라 이를 확인할 수 있다. # 39, 내가 할 일을 반복할 didn& 싶지 않다. 내가 원하는 건 쉬운 호출하십시오 나올 수 있도록 내가 지켜보리니 Eclipse 에서 비슷한 디버거 및 미라이스토스트링 (), t # 39 wasn& 그냥 그렇게 해.
import java.util.Arrays;
.
.
.
System.out.println( Arrays.toString( myarray ) );
해설 (2)

전체 작업 및 람다 표현식에서는 JDK1.8 에서 사용할 수 있습니다.

String[] strArray = new String[] {"John", "Mary", "Bob"};

// #1
Arrays.asList(strArray).stream().forEach(s -> System.out.println(s));

// #2
Stream.of(strArray).forEach(System.out::println);

// #3
Arrays.stream(strArray).forEach(System.out::println);

/* output:
John
Mary
Bob
*/
해설 (10)

Java 1.4를 사용하는 경우 대신 사용할 수 있습니다:

System.out.println(Arrays.asList(array));

(물론 1.5 이상에서도 작동합니다.)

해설 (1)

Java 로 시작하는 방법을 활용할 수도 있다 () ',' 한 8 참가하십시오 제공한 [string 클래스에] [1] 인쇄하려면 아웃해야 어레이입니다 요소 없이 브래킷에 분판된 구분 기호로 선택할 수 있으며, 즉 공백 문자를 예를 들어 아래 참조).

String[] greeting = {"Hey", "there", "amigo!"};
String delimiter = " ";
String.join(delimiter, greeting) 

어이, 아미고! &quot, &quot 출력됩니다.

[1]: https://docs.oracle.com/javase/8/docs/api/java/lang/String.html # join-java.lang.CharSequence-java.lang.CharSequence. -

해설 (0)

라이s.토스트링

[솔루션을 제공하는 등 여러 @Esko] 비호환성의 직접판매용 오토메이티드 (https://www.google.com/search? 클라이언트입니다 = safari&amp, ie =, =, = q = html+jump+to+anchor&amp UTF-8&amp ᅬ en&amp rls, UTF-8) 을 사용하여, ['라이s.토스트링'] (https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html # % toString% 28java.lang.object [] 29) 와 ['라이자이딥토스트링'] (https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html # %29 deeptostring% 28java.lang.object []) 는 단순히 최고라니까요 방법,

Java, 스트리엄스포리치 8bpc 스트리엄스콜레스 (결합 ())

아래 목록 중 일부는 내가 할 수 있는 가장 눈에 띄는 것은 물론, 조금 다른 방법으로 제안됩니다 시도중입니다 향상시키십시오 사용 중인 ['스트리엄스콜레스'] (https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html # collect-java.util.stream.Collector-) 연산자를 사용하여 ['에'] (https://docs.oracle.com/javase/8/docs/api/java/util/stream/Collectors.html # joining-java.lang.CharSequence-) '를 진행하고 있는', '어떤' 스테링스타인 모음기 한다.

int[] ints = new int[] {1, 2, 3, 4, 5};
System.out.println(IntStream.of(ints).mapToObj(Integer::toString).collect(Collectors.joining(", ")));
System.out.println(IntStream.of(ints).boxed().map(Object::toString).collect(Collectors.joining(", ")));
System.out.println(Arrays.toString(ints));

String[] strs = new String[] {"John", "Mary", "Bob"};
System.out.println(Stream.of(strs).collect(Collectors.joining(", ")));
System.out.println(String.join(", ", strs));
System.out.println(Arrays.toString(strs));

DayOfWeek [] days = { FRIDAY, MONDAY, TUESDAY };
System.out.println(Stream.of(days).map(Object::toString).collect(Collectors.joining(", ")));
System.out.println(Arrays.toString(days));

// These options are not the same as each item is printed on a new line:
IntStream.of(ints).forEach(System.out::println);
Stream.of(strs).forEach(System.out::println);
Stream.of(days).forEach(System.out::println);
해설 (0)

이에 앞서 8 jave

우리는 한 차원 배열 (array) '와' 사용할 수 있습니다 '라이s.토스트링 인쇄하려면 라이자이딥토스트링 (array)' 는 다차원 배열입니다.

Jave 8

이제 우리는 람다 (λ) '의' 옵션 '와' 스트리밍합니다 인쇄하려면 어레이입니다.

  • 인쇄면이 Array:* 한 치수
public static void main(String[] args) {
    int[] intArray = new int[] {1, 2, 3, 4, 5};
    String[] strArray = new String[] {"John", "Mary", "Bob"};

    //Prior to Java 8
    System.out.println(Arrays.toString(intArray));
    System.out.println(Arrays.toString(strArray));

    // In Java 8 we have lambda expressions
    Arrays.stream(intArray).forEach(System.out::println);
    Arrays.stream(strArray).forEach(System.out::println);
}

출력은:

[1, 2, 3, 4, 5] &gt. [존, 마리아여, 밥] 1 2 3 4 5 존 마리아여 밥

  • 인쇄면이 다차원 어레이입니다 * 혹시 우리는 라이자이딥토스트링 (array) '으로' 다차원 어레이입니다 인쇄하려면 이용할 수 있다.
public static void main(String[] args) {
    int[][] int2DArray = new int[][] { {11, 12}, { 21, 22}, {31, 32, 33} };
    String[][] str2DArray = new String[][]{ {"John", "Bravo"} , {"Mary", "Lee"}, {"Bob", "Johnson"} };

    //Prior to Java 8
    System.out.println(Arrays.deepToString(int2DArray));
    System.out.println(Arrays.deepToString(str2DArray));

    // In Java 8 we have lambda expressions
    Arrays.stream(int2DArray).flatMapToInt(x -> Arrays.stream(x)).forEach(System.out::println);
    Arrays.stream(str2DArray).flatMap(x -> Arrays.stream(x)).forEach(System.out::println);
} 

이제 가리키십시오 에로남이네 준수하십시오 라이스윈슬림 (T []) ', 즉' 방법 '의 경우 int, int [] []', '다음' 우리 'Stream&lt 되돌려줍니다 &gt 메서드로부터 프라트마pto린트 ()' 의 내용을 통해 각 요소에 매핑하므로 스트리밍합니다 제공된 구성도를 기능을 적용해 만든 매핑되었습니다 스트리밍합니다 각 요소.

출력은:

&gt, [[11, 12], [21, 22], [31, 32, 33]] [[존, 브라보], [마리아여, 리], [밥 존슨은]] 11 12 21 22 31 32tb 33 존 브라보 마리아여 리 밥 존슨

해설 (1)

라이자이딥토스트링 (도착) '만' 한 줄에 인쇄합니다.

int[][] table = new int[2][2];

실제로 한 표, 2 차원 테이블 확보하십시오 인쇄하려면 내가 가진 이 작업을 수행할 수 있습니다.

System.out.println(Arrays.deepToString(table).replaceAll("],", "]," + System.getProperty("line.separator")));

이 방법을 취해야 할 것 같다 (도착) '이 아니라' 라이자이딥토스트링 분리자를 문자열이어야 죄송합니다. doesn& # 39, t.

해설 (2)
for(int n: someArray) {
    System.out.println(n+" ");
}
해설 (5)
  • 다른 방식으로 시스템을 Java:* 인쇄하려면
  1. 간단한 방법

List&lt String>; = new ArrayList&lt String&gt 목록 ();;; 리스트리아다 (One&quot ";). 리스트리아다 (Two&quot ";). 리스트리아다 (Three&quot ";). 리스트리아다 (Four&quot ";). // 인쇄인쇄 콘솔 목록 시스템지우트리프린틀린 (목록).

&gt. 출력: &gt. [하나, 둘, 셋, 넷]

    • 'ToString () 를 사용하여' *

문자열 [], [], {&quot One&quot &quot Two&quot = new 문자열이어야 어레이입니다;;;;, &quot &quot Three&quot Four"; }; 시스템지우트리프린틀린 (라이s.토스트링 (array));

&gt. 출력: [하나, 둘, 셋, 넷]

  1. 다양한 어레이에는 인쇄면이

문자열 [], [], {&quot Fifth&quot arr1 = new 문자열이어야 &quot Sixth"; }; 문자열 [], [], {&quot arr2 = new 문자열이어야 Seventh&quot &quot Eight"; }; 문자열 [] [], [] []}, {arr1 arr2 라이오파레이 = new 구체화하십시오 시스템지우트리프린틀린 (라이오파레이); 시스템지우트리프린틀린 (라이s.토스트링 (라이오파레이)); 시스템지우트리프린틀린 (라이자이딥토스트링 (라이오파레이));

&gt. 출력: [[[[라자바드란g. 스트레이, @10385c1, @1ad086a 라자바드란g. 스트레이. &gt. [라자바드란g. 스트레이, @42719c] [[5, 6], [일곱, 여덟 번째]]

출처: 액세스만 어레이에서는

해설 (0)

일반 에 대한 가장 간단한 방법을 사용하여 루프가 인쇄면이 어레이입니다 내 목소리를 높였다. 안타이 따라 샘플 코드를 가지고 있습니다.

for (int i = 0; i < intArray.length; i++) {
   System.out.print(intArray[i] + ", ");
}

이를 통해 출력할 당신 1, 2, 3, 4, 5

해설 (5)

자바 가상 머신 (jvm) 에 8 개 it 쉽지 않다. 두 가지 키워드

  1. 스트리밍합니다: '라이스윈슬림 스포리치' (안타이)
  2. 메서드입니다 참조: '프린틀린'

int 안타이 int = new [] [] {1, 2, 3, 4, 5}; 라이스윈슬림 (안타이) 스포리치 (System.out::println);

인쇄하려면 같은 줄에 있는 모든 요소를 어레이입니다 프린틀린 '즉' 대신 '다음' 인쇄하십시오 됩니다

int[] intArray = new int[] {1, 2, 3, 4, 5};
Arrays.stream(intArray).forEach(System.out::print);

또 다른 방법은 메서드입니다 참조입니다 없이 됩니다.

int[] intArray = new int[] {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(intArray));
해설 (2)

작업 중 JDK 버전으로 사용할 수 있어야 합니다.

System.out.println(Arrays.asList(array));

이 경우 '' 어레이입니다 객체에는 사용할 수 있습니다. 이 경우 '대신' 어레이입니다 map_layer 프리미티브 유형, 래퍼 클래스뿐만 저장 효과로 다시 사용할 수 있습니다.

예:

int[] a = new int[]{1,2,3,4,5};

바꿀 수 있습니다.

Integer[] a = new Integer[]{1,2,3,4,5};
  • 업데이트 :*

구로췌! 이는 변환할 수 있는 객체에 대한 어레이에서는 언급하십시오 어레이나 Object& # 39 의 어레이입니다 실행 속도가 느려질 수 많은 비용이 들고 사용할 수 있다. 이것은 성격상 자바 호출됨 오토보싱.

그래서 인쇄면이 대해서만 목적, It 사용하지 않아야 합니다. 우리는 어떤 함수의 매개 변수로 어레이에서는 및 유인물 등 원하는 형식을 담당하는 내말들어봐

public void printArray(int [] a){
        //write printing code
} 
해설 (1)

이 왔는지 구현하므로) 의 [바닐라 # Java] (http://vanillajava.blogspot.com/2016/03/printing-arrays-by-hacking-jvm.html) 는 최근. # 39, writing 's not it& 라이s.토스트링 (도착),', '매우 편리하게 임포트하지 관심용 제바스티레비아라이스' all the time.

  • 참고, 어떠한 방법으로도 수리입니다 영구적입니다 아닙니다. 그냥 simpler.* 디버깅하지 만들 수 있는 해킹 사건

직접 어레이에서는 보기입니다 인쇄면이 내부 표현과 하시코드. 이제 '객체' 를 가지고 있는 모든 계층의 상위 유형. 따라서 왜안돼요 해킹 () '이' 로비치스토스트링? 수정 없이, 객체에는 클래스용 다음과 같습니다.

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

만약 이 변경될 수 있습니다.

public String toString() {
    if (this instanceof boolean[])
        return Arrays.toString((boolean[]) this);
    if (this instanceof byte[])
        return Arrays.toString((byte[]) this);
    if (this instanceof short[])
        return Arrays.toString((short[]) this);
    if (this instanceof char[])
        return Arrays.toString((char[]) this);
    if (this instanceof int[])
        return Arrays.toString((int[]) this);
    if (this instanceof long[])
        return Arrays.toString((long[]) this);
    if (this instanceof float[])
        return Arrays.toString((float[]) this);
    if (this instanceof double[])
        return Arrays.toString((double[]) this);
    if (this instanceof Object[])
        return Arrays.deepToString((Object[]) this);
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

이 모디드 클래스용 클래스 경로 추가하기만 명령줄이 다음과 같이 간단히 추가할 수 있습니다. '-Xbootclasspath/p:target/classes'.

이제 가용성입니다 딥토스트링 (.) '와' 이후 'toString (.)' 로 Java 5 를 쉽게 사용할 수 있습니다 '딥토스트링 (.)' 을 포함하는 대한 지원 추가 어레이에는 다른 배열입니다.

내가 찾은 이 될 경우 매우 유익한 해킹 및 Java 추가할 수 있는 이 좋을 것입니다. 이해 할 수 있는 문제로 매우 큰 어레이에는 문자열 표현 때문에 문제가 됩니다. 아마 '또는' a '사태' 에 대해 같은 항목을 전달하십시오 시스템리우스 프린트라이터 등.

해설 (2)

39 의 경우 1 개 추가 there& 운행에서어떠한 어레이입니다 형식은 챨 []:

char A[] = {'a', 'b', 'c'}; 

System.out.println(A); // no other arguments

인쇄

abc
해설 (0)

이 때 각 항목을 루프지 어레이이며 인쇄면이 아웃해야 반복하고 있습니다. 예를 들면 다음과 같습니다.

String[] items = {"item 1", "item 2", "item 3"};

for(int i = 0; i < items.length; i++) {

    System.out.println(items[i]);

}

출력:

item 1
item 2
item 3
해설 (0)

모든 문제의 답을 로케이터로 JSON 문자열은 인쇄면이 추가할 수 있는 옵션도.

Flexlm*용 잭슨:

ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
System.out.println(ow.writeValueAsString(anyArray));

그슨 사용하여.

Gson gson = new Gson();
System.out.println(gson.toJson(anyArray));
해설 (1)
  • 인쇄하려면 어레이입니다 다음과 같은 방법으로 있습니다 *
 // 1) toString()  
    int[] arrayInt = new int[] {10, 20, 30, 40, 50};  
    System.out.println(Arrays.toString(arrayInt));

// 2 for loop()
    for (int number : arrayInt) {
        System.out.println(number);
    }

// 3 for each()
    for(int x: arrayInt){
         System.out.println(x);
     }
해설 (0)

요소를 어레이입니다 인쇄하려면 각 루프 사용할 수도 있습니다.

int array[] = {1, 2, 3, 4, 5};
for (int i:array)
    System.out.println(i);
해설 (2)