簡體   English   中英

用於打印數組中所有元素的通用方法

[英]generic method to print all elements in an array

我想要一個循環任何類型數組並打印它們的方法,我寫了以下內容:

public static <T> void printArray(T[] arr){
    for(T t: arr){
       System.out.print(t+" ");
    }
    System.out.println("");
}

但是這個只適用於類數組,如果我有一個char[]而不是一個Character[] ,或者一個int[]而不是一個Integer[] ,或者有沒有辦法在它們之前投射它們? 謝謝

java.util.Arrays.toString(array)應該這樣做。

  • commons-lang也有 - ArrayUtils.toString(array) (但更喜歡JDK)
  • commons-lang允許自定義分隔符 - StringUtils.join(array, ',')
  • guava還允許使用分隔符,並且可以選擇跳過空值: Joiner.on(',').skipNulls().join(array)

所有這些都返回一個String ,然后可以使用System.out.println(..)logger.debug(..) 請注意,如果數組的元素以有意義的方式實現了toString() ,這些將為您提供有意義的輸入。

最后兩個選項,唉,不支持原始數組,但是很好的選擇要知道。

你不能為原始數組寫一個通用的定義。 相反,您可以使用方法重載並為每個基本數組類型編寫一個方法,如下所示,

public static void printArray(int[] arr)
public static void printArray(short[] arr)
public static void printArray(long[] arr)
public static void printArray(double[] arr)
public static void printArray(float[] arr)
public static void printArray(char[] arr)
public static void printArray(byte[] arr)
public static void printArray(boolean[] arr)
private static void printArray(Object arr) {
        // TODO Auto-generated method stub
        String arrayClassName=arr.getClass().getSimpleName();
        if (arrayClassName.equals("int[]"))
            System.out.println(java.util.Arrays.toString((int[]) arr));
        if (arrayClassName.equals("char[]"))
            System.out.println(java.util.Arrays.toString((char[]) arr));
    }

您不能將原始數組傳遞給printArray()方法

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM