package com.tool.common.log.util;
import java.util.Arrays;
/**
* ArrayUtil
*/
public class ArrayUtil {
public ArrayUtil() {
throw new AssertionError();
}
/**
* 是否为数组
*
* @param object
* @return
*/
public static boolean isArray(Object object) {
return object.getClass().isArray();
}
/**
* 获取数组的维度
*
* @param object
* @return
*/
private static int getArrayDimension(Object object) {
int dim = 0;
for (int i = 0; i < object.toString().length(); ++i) {
if (object.toString().charAt(i) == '[') {
++dim;
} else {
break;
}
}
return dim;
}
/**
* 获取数组类型
*
* @param object
* @return
*/
private static char getType(Object object) {
if (isArray(object)) {
String str = object.toString();
return str.substring(str.lastIndexOf("[") + 1, str.lastIndexOf("[") + 2).charAt(0);
}
return 0;
}
/**
* 遍历数组
*
* @param result
* @param array
*/
private static void traverseArray(StringBuilder result, Object array) {
if (getArrayDimension(array) == 1) {
switch (getType(array)) {
case 'I':
result.append(Arrays.toString((int[]) array));
break;
case 'D':
result.append(Arrays.toString((double[]) array));
break;
case 'Z':
result.append(Arrays.toString((boolean[]) array));
break;
case 'B':
result.append(Arrays.toString((byte[]) array));
break;
case 'S':
result.append(Arrays.toString((short[]) array));
break;
case 'J':
result.append(Arrays.toString((long[]) array));
break;
case 'F':
result.append(Arrays.toString((float[]) array));
break;
case 'L':
Object[] objects = (Object[]) array;
result.append("[");
for (int i = 0; i < objects.length; i++) {
result.append(ObjectUtil.objectToString(objects[i]));
if (i != objects.length - 1) {
result.append(",");
}
}
result.append("]");
break;
default:
result.append(Arrays.toString((Object[]) array));
break;
}
} else {
result.append("[");
for (int i = 0; i < ((Object[]) array).length; i++) {
traverseArray(result, ((Object[]) array)[i]);
if (i != ((Object[]) array).length - 1) {
result.append(",");
}
}
result.append("]");
}
}
/**
* 将数组内容转化为字符串
*
* @param array
* @return
*/
public static String parseArray(Object array) {
StringBuilder result = new StringBuilder();
traverseArray(result, array);
return result.toString();
}
}