Here you can find the source of deepToString(Object[] a)
Parameter | Description |
---|---|
a | the array whose string representation to return |
public static String deepToString(Object[] a)
//package com.java2s; /*//from www . j a va2 s . c o m * Copyright 2016 xueyi (1581249005@qq.com) * * The Smart-Actor Project licenses this file to you under the Apache License, * version 2.0 (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ import java.util.*; public class Main { /** * Returns a string representation of the "deep contents" of the specified * array. If the array contains other arrays as elements, the string * representation contains their contents and so on. This method is * designed for converting multidimensional arrays to strings. * * <p>The string representation consists of a list of the array's * elements, enclosed in square brackets (<tt>"[]"</tt>). Adjacent * elements are separated by the characters <tt>", "</tt> (a comma * followed by a space). Elements are converted to strings as by * <tt>String.valueOf(Object)</tt>, unless they are themselves * arrays. * * <p>If an element <tt>e</tt> is an array of a primitive type, it is * converted to a string as by invoking the appropriate overloading of * <tt>Arrays.toString(e)</tt>. If an element <tt>e</tt> is an array of a * reference type, it is converted to a string as by invoking * this method recursively. * * <p>To avoid infinite recursion, if the specified array contains itself * as an element, or contains an indirect reference to itself through one * or more levels of arrays, the self-reference is converted to the string * <tt>"[...]"</tt>. For example, an array containing only a reference * to itself would be rendered as <tt>"[[...]]"</tt>. * * <p>This method returns <tt>"null"</tt> if the specified array * is <tt>null</tt>. * * @param a the array whose string representation to return * @return a string representation of <tt>a</tt> * @see #toString(Object[]) * @since 1.5 */ public static String deepToString(Object[] a) { if (a == null) return "null"; int bufLen = 20 * a.length; if (a.length != 0 && bufLen <= 0) bufLen = Integer.MAX_VALUE; StringBuilder buf = new StringBuilder(bufLen); deepToString(a, buf, new HashSet<Object[]>()); return buf.toString(); } private static void deepToString(Object[] a, StringBuilder buf, Set<Object[]> dejaVu) { if (a == null) { buf.append("null"); return; } int iMax = a.length - 1; if (iMax == -1) { buf.append("[]"); return; } dejaVu.add(a); buf.append('['); for (int i = 0;; i++) { Object element = a[i]; if (element == null) { buf.append("null"); } else { Class eClass = element.getClass(); if (eClass.isArray()) { if (eClass == byte[].class) buf.append(toString((byte[]) element)); else if (eClass == short[].class) buf.append(toString((short[]) element)); else if (eClass == int[].class) buf.append(toString((int[]) element)); else if (eClass == long[].class) buf.append(toString((long[]) element)); else if (eClass == char[].class) buf.append(toString((char[]) element)); else if (eClass == float[].class) buf.append(toString((float[]) element)); else if (eClass == double[].class) buf.append(toString((double[]) element)); else if (eClass == boolean[].class) buf.append(toString((boolean[]) element)); else { // element is an array of object references if (dejaVu.contains(element)) buf.append("[...]"); else deepToString((Object[]) element, buf, dejaVu); } } else { // element is non-null and not an array buf.append(element.toString()); } } if (i == iMax) break; buf.append(", "); } buf.append(']'); dejaVu.remove(a); } /** * Returns a string representation of the contents of the specified array. * The string representation consists of a list of the array's elements, * enclosed in square brackets (<tt>"[]"</tt>). Adjacent elements are * separated by the characters <tt>", "</tt> (a comma followed by a * space). Elements are converted to strings as by * <tt>String.valueOf(long)</tt>. Returns <tt>"null"</tt> if <tt>a</tt> * is <tt>null</tt>. * * @param a the array whose string representation to return * @return a string representation of <tt>a</tt> * @since 1.5 */ public static String toString(long[] a) { if (a == null) return "null"; int iMax = a.length - 1; if (iMax == -1) return "[]"; StringBuilder b = new StringBuilder(); b.append('['); for (int i = 0;; i++) { b.append(a[i]); if (i == iMax) return b.append(']').toString(); b.append(", "); } } /** * Returns a string representation of the contents of the specified array. * The string representation consists of a list of the array's elements, * enclosed in square brackets (<tt>"[]"</tt>). Adjacent elements are * separated by the characters <tt>", "</tt> (a comma followed by a * space). Elements are converted to strings as by * <tt>String.valueOf(int)</tt>. Returns <tt>"null"</tt> if <tt>a</tt> is * <tt>null</tt>. * * @param a the array whose string representation to return * @return a string representation of <tt>a</tt> * @since 1.5 */ public static String toString(int[] a) { if (a == null) return "null"; int iMax = a.length - 1; if (iMax == -1) return "[]"; StringBuilder b = new StringBuilder(); b.append('['); for (int i = 0;; i++) { b.append(a[i]); if (i == iMax) return b.append(']').toString(); b.append(", "); } } /** * Returns a string representation of the contents of the specified array. * The string representation consists of a list of the array's elements, * enclosed in square brackets (<tt>"[]"</tt>). Adjacent elements are * separated by the characters <tt>", "</tt> (a comma followed by a * space). Elements are converted to strings as by * <tt>String.valueOf(short)</tt>. Returns <tt>"null"</tt> if <tt>a</tt> * is <tt>null</tt>. * * @param a the array whose string representation to return * @return a string representation of <tt>a</tt> * @since 1.5 */ public static String toString(short[] a) { if (a == null) return "null"; int iMax = a.length - 1; if (iMax == -1) return "[]"; StringBuilder b = new StringBuilder(); b.append('['); for (int i = 0;; i++) { b.append(a[i]); if (i == iMax) return b.append(']').toString(); b.append(", "); } } /** * Returns a string representation of the contents of the specified array. * The string representation consists of a list of the array's elements, * enclosed in square brackets (<tt>"[]"</tt>). Adjacent elements are * separated by the characters <tt>", "</tt> (a comma followed by a * space). Elements are converted to strings as by * <tt>String.valueOf(char)</tt>. Returns <tt>"null"</tt> if <tt>a</tt> * is <tt>null</tt>. * * @param a the array whose string representation to return * @return a string representation of <tt>a</tt> * @since 1.5 */ public static String toString(char[] a) { if (a == null) return "null"; int iMax = a.length - 1; if (iMax == -1) return "[]"; StringBuilder b = new StringBuilder(); b.append('['); for (int i = 0;; i++) { b.append(a[i]); if (i == iMax) return b.append(']').toString(); b.append(", "); } } /** * Returns a string representation of the contents of the specified array. * The string representation consists of a list of the array's elements, * enclosed in square brackets (<tt>"[]"</tt>). Adjacent elements * are separated by the characters <tt>", "</tt> (a comma followed * by a space). Elements are converted to strings as by * <tt>String.valueOf(byte)</tt>. Returns <tt>"null"</tt> if * <tt>a</tt> is <tt>null</tt>. * * @param a the array whose string representation to return * @return a string representation of <tt>a</tt> * @since 1.5 */ public static String toString(byte[] a) { if (a == null) return "null"; int iMax = a.length - 1; if (iMax == -1) return "[]"; StringBuilder b = new StringBuilder(); b.append('['); for (int i = 0;; i++) { b.append(a[i]); if (i == iMax) return b.append(']').toString(); b.append(", "); } } /** * Returns a string representation of the contents of the specified array. * The string representation consists of a list of the array's elements, * enclosed in square brackets (<tt>"[]"</tt>). Adjacent elements are * separated by the characters <tt>", "</tt> (a comma followed by a * space). Elements are converted to strings as by * <tt>String.valueOf(boolean)</tt>. Returns <tt>"null"</tt> if * <tt>a</tt> is <tt>null</tt>. * * @param a the array whose string representation to return * @return a string representation of <tt>a</tt> * @since 1.5 */ public static String toString(boolean[] a) { if (a == null) return "null"; int iMax = a.length - 1; if (iMax == -1) return "[]"; StringBuilder b = new StringBuilder(); b.append('['); for (int i = 0;; i++) { b.append(a[i]); if (i == iMax) return b.append(']').toString(); b.append(", "); } } /** * Returns a string representation of the contents of the specified array. * The string representation consists of a list of the array's elements, * enclosed in square brackets (<tt>"[]"</tt>). Adjacent elements are * separated by the characters <tt>", "</tt> (a comma followed by a * space). Elements are converted to strings as by * <tt>String.valueOf(float)</tt>. Returns <tt>"null"</tt> if <tt>a</tt> * is <tt>null</tt>. * * @param a the array whose string representation to return * @return a string representation of <tt>a</tt> * @since 1.5 */ public static String toString(float[] a) { if (a == null) return "null"; int iMax = a.length - 1; if (iMax == -1) return "[]"; StringBuilder b = new StringBuilder(); b.append('['); for (int i = 0;; i++) { b.append(a[i]); if (i == iMax) return b.append(']').toString(); b.append(", "); } } /** * Returns a string representation of the contents of the specified array. * The string representation consists of a list of the array's elements, * enclosed in square brackets (<tt>"[]"</tt>). Adjacent elements are * separated by the characters <tt>", "</tt> (a comma followed by a * space). Elements are converted to strings as by * <tt>String.valueOf(double)</tt>. Returns <tt>"null"</tt> if <tt>a</tt> * is <tt>null</tt>. * * @param a the array whose string representation to return * @return a string representation of <tt>a</tt> * @since 1.5 */ public static String toString(double[] a) { if (a == null) return "null"; int iMax = a.length - 1; if (iMax == -1) return "[]"; StringBuilder b = new StringBuilder(); b.append('['); for (int i = 0;; i++) { b.append(a[i]); if (i == iMax) return b.append(']').toString(); b.append(", "); } } /** * Returns a string representation of the contents of the specified array. * If the array contains other arrays as elements, they are converted to * strings by the {@link Object#toString} method inherited from * <tt>Object</tt>, which describes their <i>identities</i> rather than * their contents. * * <p>The value returned by this method is equal to the value that would * be returned by <tt>Arrays.asList(a).toString()</tt>, unless <tt>a</tt> * is <tt>null</tt>, in which case <tt>"null"</tt> is returned. * * @param a the array whose string representation to return * @return a string representation of <tt>a</tt> * @see #deepToString(Object[]) * @since 1.5 */ public static String toString(Object[] a) { if (a == null) return "null"; int iMax = a.length - 1; if (iMax == -1) return "[]"; StringBuilder b = new StringBuilder(); b.append('['); for (int i = 0;; i++) { b.append(String.valueOf(a[i])); if (i == iMax) return b.append(']').toString(); b.append(", "); } } }