ArrayUtil.java Source code

Java tutorial

Introduction

Here is the source code for ArrayUtil.java

Source

/*
 * Copyright WizTools.org
 * Licensed under the Apache License, Version 2.0:
 * http://www.apache.org/licenses/LICENSE-2.0
 */
//package org.wiztools.commons;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author subwiz
 */
public final class ArrayUtil {
    /**
     * Determines if the passed object is of type array.
     * @param o The object to determine if it is an array.
     * @return true if the passed object is an array.
     * @throws NullPointerException when the passed object is null.
     */
    public static boolean isArray(Object o) throws NullPointerException {
        if (o == null)
            throw new NullPointerException("Object is null: cannot determine if it is of array type.");
        else {
            return o.getClass().isArray();
        }
    }

    /**
     * Concatenates all the passed parameters.
     * @param <T>
     * @param objs
     * @return
     */
    public static <T> T[] concat(T[]... objs) {
        List<T> out = new ArrayList<T>();

        int i = 0;
        T[] pass = null;
        for (T[] o : objs) {
            for (int j = 0; j < o.length; j++) {
                out.add(o[j]);
                i++;
            }
            pass = o;
        }

        return out.toArray(pass);
    }

    // Primitive types for quicker copy:

    public static short[] concat(short[]... objs) {
        int count = 0;
        for (short[] o : objs) {
            count += o.length;
        }

        final short[] out = new short[count];

        int i = 0;
        for (short[] o : objs) {
            for (int j = 0; j < o.length; j++) {
                out[i] = o[j];
                i++;
            }
        }

        return out;
    }

    public static int[] concat(int[]... objs) {
        int count = 0;
        for (int[] o : objs) {
            count += o.length;
        }

        final int[] out = new int[count];

        int i = 0;
        for (int[] o : objs) {
            for (int j = 0; j < o.length; j++) {
                out[i] = o[j];
                i++;
            }
        }

        return out;
    }

    public static long[] concat(long[]... objs) {
        int count = 0;
        for (long[] o : objs) {
            count += o.length;
        }

        final long[] out = new long[count];

        int i = 0;
        for (long[] o : objs) {
            for (int j = 0; j < o.length; j++) {
                out[i] = o[j];
                i++;
            }
        }

        return out;
    }

    public static byte[] concat(byte[]... objs) {
        int count = 0;
        for (byte[] o : objs) {
            count += o.length;
        }

        final byte[] out = new byte[count];

        int i = 0;
        for (byte[] o : objs) {
            for (int j = 0; j < o.length; j++) {
                out[i] = o[j];
                i++;
            }
        }

        return out;
    }

    public static char[] concat(char[]... objs) {
        int count = 0;
        for (char[] o : objs) {
            count += o.length;
        }

        final char[] out = new char[count];

        int i = 0;
        for (char[] o : objs) {
            for (int j = 0; j < o.length; j++) {
                out[i] = o[j];
                i++;
            }
        }

        return out;
    }

    public static float[] concat(float[]... objs) {
        int count = 0;
        for (float[] o : objs) {
            count += o.length;
        }

        final float[] out = new float[count];

        int i = 0;
        for (float[] o : objs) {
            for (int j = 0; j < o.length; j++) {
                out[i] = o[j];
                i++;
            }
        }

        return out;
    }

    public static double[] concat(double[]... objs) {
        int count = 0;
        for (double[] o : objs) {
            count += o.length;
        }

        final double[] out = new double[count];

        int i = 0;
        for (double[] o : objs) {
            for (int j = 0; j < o.length; j++) {
                out[i] = o[j];
                i++;
            }
        }

        return out;
    }

    public static boolean[] concat(boolean[]... objs) {
        int count = 0;
        for (boolean[] o : objs) {
            count += o.length;
        }

        final boolean[] out = new boolean[count];

        int i = 0;
        for (boolean[] o : objs) {
            for (int j = 0; j < o.length; j++) {
                out[i] = o[j];
                i++;
            }
        }

        return out;
    }
}