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;
}
}
Related examples in the same category