packagecom.bsc.algorithm.data.generator;importjava.lang.reflect.Array;importjava.util.Random;/*** 数组生成器
*@authorbsc
**/
public classArrayGenerator {/*** 随机生成size大小的数组
*@paramarrayClass 数组class,例如Integer[].class,int[].class,Character[].class,char[].class
*@paramsize 数组大小
*@parammin 最小值
*@parammax 最大值
*@return
*/@SuppressWarnings("unchecked")public static T random(Class arrayClass, int size,int min,intmax) {int diff = max - min + 1;
Random random= newRandom();
Class> componentType =arrayClass.getComponentType();
String componentName=componentType.getName();
T array=(T) Array.newInstance(componentType, size);if("char".equals(componentName) || Character.class.getName().equals(componentName)) {for (int i = 0; i < size; i++) {
Array.set(array, i, (char)(random.nextInt(diff) +min));
}
}else{for (int i = 0; i < size; i++) {
Array.set(array, i, random.nextInt(diff)+min);
}
}returnarray;
}/*** 生成指定序列数组
*@paramarrayClass 数组class,例如Integer[].class,int[].class,Character[].class,char[].class
*@paramsize 数组大小
*@paramstart 数组开始值
*@paramincrement 数组元素间增量
*@return
*/@SuppressWarnings("unchecked")public static T seq(Class arrayClass, int size,int start,intincrement) {
Class> componentType =arrayClass.getComponentType();
String componentName=componentType.getName();
T array=(T) Array.newInstance(componentType, size);if("char".equals(componentName) || Character.class.getName().equals(componentName)) {for (int i = 0; i < size; i++) {
Array.set(array, i, (char)(start));
start+=increment;
}
}else{for (int i = 0; i < size; i++) {
Array.set(array, i, start);
start+=increment;
}
}returnarray;
}public static voidmain(String[] args) {int[] dataInt = ArrayGenerator.random(int[].class, 20,10,99);
System.out.print("random:\t");for (int i = 0; i < dataInt.length; i++) {
System.out.print(dataInt[i]+ " ");
}
System.out.println();
System.out.print(" seq:\t");
dataInt= ArrayGenerator.seq(int[].class, 20,20,1);for (int i = 0; i < dataInt.length; i++) {
System.out.print(dataInt[i]+ " ");
}
System.out.println();
System.out.print("random:\t");char[] dataChar = ArrayGenerator.random(char[].class, 26,65,90);for (int i = 0; i < dataChar.length; i++) {
System.out.print(dataChar[i]+ " ");
}
System.out.println();
System.out.print(" seq:\t");
dataChar= ArrayGenerator.seq(char[].class, 26,65,1);for (int i = 0; i < dataChar.length; i++) {
System.out.print(dataChar[i]+ " ");
}
}
}