универсальный метод для печати всех элементов в массиве - PullRequest
15 голосов
/ 03 мая 2011

Я хочу метод, который будет зацикливать любой тип массива и печатать их, я написал следующее:

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

но этот работает только для массивов классов, что если у меня есть char[] вместо Character[] или int[] вместо Integer[], или есть способ разыграть их перед рукой? Спасибо

Ответы [ 4 ]

26 голосов
/ 03 мая 2011

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() значимым образом.

Последние два параметра, увы, не поддерживают примитивные массивы, но являются хорошими параметрамизнать.

2 голосов
/ 03 мая 2011

Вы не можете написать общее определение для примитивных массивов. Вместо этого вы можете использовать перегрузку методов и написать метод для каждого типа примитивного массива, например:

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)
1 голос
/ 08 июня 2018
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));
    }
0 голосов
/ 03 мая 2011

Нельзя передавать примитивные массивы в метод printArray ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...