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]
1838
20
Java 5부터는 배열 내의 배열에 대해
Arrays.toString(arr)
또는Arrays.deepToString(arr)
를 사용할 수 있습니다. Object[]버전은 배열의 각 객체에 대해
.toString()`을 호출한다는 점에 유의하세요. 출력은 사용자가 요청한 정확한 방식으로 꾸며집니다.예시:
단순 배열:
출력합니다:
중첩 배열:
출력합니다:
double
배열:출력합니다:
int
배열:출력합니다:
항상 표준 라이브러리를 먼저 확인하세요. 시도해 보세요:
또는 배열에 다른 배열이 요소로 포함되어 있는지 확인하세요:
그러나 항상 " 대해 아는 것이 좋다, 표준 라이브러리를 first" 확인합니다. # 39 의 i& 귀의하지않는다고 그 트릭 (myarray) '' 라이s.토스트링 발견했다; d
전체 작업 및 람다 표현식에서는 JDK1.8 에서 사용할 수 있습니다.
Java 1.4를 사용하는 경우 대신 사용할 수 있습니다:
(물론 1.5 이상에서도 작동합니다.)
Java 로 시작하는 방법을 활용할 수도 있다 () ',' 한 8 참가하십시오 제공한 [string 클래스에] [1] 인쇄하려면 아웃해야 어레이입니다 요소 없이 브래킷에 분판된 구분 기호로 선택할 수 있으며, 즉 공백 문자를 예를 들어 아래 참조).
어이, 아미고! ", " 출력됩니다.
[1]: https://docs.oracle.com/javase/8/docs/api/java/lang/String.html # join-java.lang.CharSequence-java.lang.CharSequence. -
라이s.토스트링
[솔루션을 제공하는 등 여러 @Esko] 비호환성의 직접판매용 오토메이티드 (https://www.google.com/search? 클라이언트입니다 = safari&, ie =, =, = q = html+jump+to+anchor& UTF-8& ᅬ en& 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-) '를 진행하고 있는', '어떤' 스테링스타인 모음기 한다.
이에 앞서 8 jave
우리는 한 차원 배열 (array) '와' 사용할 수 있습니다 '라이s.토스트링 인쇄하려면 라이자이딥토스트링 (array)' 는 다차원 배열입니다.
Jave 8
이제 우리는 람다 (λ) '의' 옵션 '와' 스트리밍합니다 인쇄하려면 어레이입니다.
출력은:
[1, 2, 3, 4, 5] >. [존, 마리아여, 밥] 1 2 3 4 5 존 마리아여 밥
이제 가리키십시오 에로남이네 준수하십시오 라이스윈슬림 (T []) ', 즉' 방법 '의 경우 int, int [] []', '다음' 우리 'Stream< 되돌려줍니다 > 메서드로부터 프라트마pto린트 ()' 의 내용을 통해 각 요소에 매핑하므로 스트리밍합니다 제공된 구성도를 기능을 적용해 만든 매핑되었습니다 스트리밍합니다 각 요소.
출력은:
>, [[11, 12], [21, 22], [31, 32, 33]] [[존, 브라보], [마리아여, 리], [밥 존슨은]] 11 12 21 22 31 32tb 33 존 브라보 마리아여 리 밥 존슨
라이자이딥토스트링 (도착) '만' 한 줄에 인쇄합니다.
실제로 한 표, 2 차원 테이블 확보하십시오 인쇄하려면 내가 가진 이 작업을 수행할 수 있습니다.
이 방법을 취해야 할 것 같다 (도착) '이 아니라' 라이자이딥토스트링 분리자를 문자열이어야 죄송합니다. doesn& # 39, t.
List< String>; = new ArrayList< String> 목록 ();;; 리스트리아다 (One" ";). 리스트리아다 (Two" ";). 리스트리아다 (Three" ";). 리스트리아다 (Four" ";). // 인쇄인쇄 콘솔 목록 시스템지우트리프린틀린 (목록).
>. 출력: >. [하나, 둘, 셋, 넷]
문자열 [], [], {" One" " Two" = new 문자열이어야 어레이입니다;;;;, " " Three" Four"; }; 시스템지우트리프린틀린 (라이s.토스트링 (array));
>. 출력: [하나, 둘, 셋, 넷]
문자열 [], [], {" Fifth" arr1 = new 문자열이어야 " Sixth"; }; 문자열 [], [], {" arr2 = new 문자열이어야 Seventh" " Eight"; }; 문자열 [] [], [] []}, {arr1 arr2 라이오파레이 = new 구체화하십시오 시스템지우트리프린틀린 (라이오파레이); 시스템지우트리프린틀린 (라이s.토스트링 (라이오파레이)); 시스템지우트리프린틀린 (라이자이딥토스트링 (라이오파레이));
>. 출력: [[[[라자바드란g. 스트레이, @10385c1, @1ad086a 라자바드란g. 스트레이. >. [라자바드란g. 스트레이, @42719c] [[5, 6], [일곱, 여덟 번째]]
출처: 액세스만 어레이에서는
일반 에 대한 가장 간단한 방법을 사용하여 루프가 인쇄면이 어레이입니다 내 목소리를 높였다. 안타이 따라 샘플 코드를 가지고 있습니다.
이를 통해 출력할 당신 1, 2, 3, 4, 5
자바 가상 머신 (jvm) 에 8 개 it 쉽지 않다. 두 가지 키워드
int 안타이 int = new [] [] {1, 2, 3, 4, 5}; 라이스윈슬림 (안타이) 스포리치 (System.out::println);
인쇄하려면 같은 줄에 있는 모든 요소를 어레이입니다 프린틀린 '즉' 대신 '다음' 인쇄하십시오 됩니다
또 다른 방법은 메서드입니다 참조입니다 없이 됩니다.
작업 중 JDK 버전으로 사용할 수 있어야 합니다.
이 경우 '' 어레이입니다 객체에는 사용할 수 있습니다. 이 경우 '대신' 어레이입니다 map_layer 프리미티브 유형, 래퍼 클래스뿐만 저장 효과로 다시 사용할 수 있습니다.
예:
바꿀 수 있습니다.
구로췌! 이는 변환할 수 있는 객체에 대한 어레이에서는 언급하십시오 어레이나 Object& # 39 의 어레이입니다 실행 속도가 느려질 수 많은 비용이 들고 사용할 수 있다. 이것은 성격상 자바 호출됨 오토보싱.
그래서 인쇄면이 대해서만 목적, It 사용하지 않아야 합니다. 우리는 어떤 함수의 매개 변수로 어레이에서는 및 유인물 등 원하는 형식을 담당하는 내말들어봐
이 왔는지 구현하므로) 의 [바닐라 # Java] (http://vanillajava.blogspot.com/2016/03/printing-arrays-by-hacking-jvm.html) 는 최근. # 39, writing 's not it& 라이s.토스트링 (도착),', '매우 편리하게 임포트하지 관심용 제바스티레비아라이스' all the time.
직접 어레이에서는 보기입니다 인쇄면이 내부 표현과 하시코드. 이제 '객체' 를 가지고 있는 모든 계층의 상위 유형. 따라서 왜안돼요 해킹 () '이' 로비치스토스트링? 수정 없이, 객체에는 클래스용 다음과 같습니다.
만약 이 변경될 수 있습니다.
이 모디드 클래스용 클래스 경로 추가하기만 명령줄이 다음과 같이 간단히 추가할 수 있습니다. '-Xbootclasspath/p:target/classes'.
이제 가용성입니다 딥토스트링 (.) '와' 이후 'toString (.)' 로 Java 5 를 쉽게 사용할 수 있습니다 '딥토스트링 (.)' 을 포함하는 대한 지원 추가 어레이에는 다른 배열입니다.
내가 찾은 이 될 경우 매우 유익한 해킹 및 Java 추가할 수 있는 이 좋을 것입니다. 이해 할 수 있는 문제로 매우 큰 어레이에는 문자열 표현 때문에 문제가 됩니다. 아마 '또는' a '사태' 에 대해 같은 항목을 전달하십시오 시스템리우스 프린트라이터 등.
39 의 경우 1 개 추가 there& 운행에서어떠한 어레이입니다 형식은 챨 []:
인쇄
이 때 각 항목을 루프지 어레이이며 인쇄면이 아웃해야 반복하고 있습니다. 예를 들면 다음과 같습니다.
출력:
모든 문제의 답을 로케이터로 JSON 문자열은 인쇄면이 추가할 수 있는 옵션도.
Flexlm*용 잭슨:
그슨 사용하여.
요소를 어레이입니다 인쇄하려면 각 루프 사용할 수도 있습니다.