Concatenates all the passed arrays
/* * 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; } }