自己项目里用到的工具类,不定时更新
public final class SpeedyKit {
private SpeedyKit() {
throw new AssertionError();
}
/**
* 获取a(包含)与b(包含)之间的所有的自然数,步长为1.本方法会比较a和b的大小,然后升序排列
*
* @param a
* @param b
* @return
*/
public static int[] stepDigits(int a, int b) {
int min = Math.min(a, b);
int max = Math.max(a, b);
int[] array = new int[max - min + 1];
for (int i = 0; min <= max; min++) {
array[i++] = min;
}
return array;
}
/**
* 返回数组的最后一个元素
*
* @param array
* @return
* @throws NullPointerException
* 如果数组为null
*/
public static int lastOfArray(int[] array) {
if (array == null) {
throw new NullPointerException();
}
return array[array.length - 1];
}
/**
* 返回数组的最后一个元素
*
* @param <T>
* @param array
* @return
* @throws NullPointerException
* 如果数组为null
*/
public static <T> T lastOfArray(T[] array) {
if (array == null) {
throw new NullPointerException();
}
return array[array.length - 1];
}
/**
* 反转数组
*
* @param array 自然排序过的数组
* @return
* @throws NullPointerException
* 如果数组为null
*/
public static int[] reverseArray(int[] array) {
if (array == null) {
throw new NullPointerException();
}
int[] newArray = new int[array.length];
for (int i = 0, j = array.length - 1; j >= 0; j--) {
newArray[i++] = array[j];
}
return newArray;
}
/**
* 反转数组
*
* @param <T>
* @param array 自然排序过的数组
* @return
* @throws NullPointerException
* 如果数组为null
*/
public static <T> T[] reverseArray(T[] array) {
if (array == null) {
throw new NullPointerException();
}
T[] newArray = Arrays.copyOf(array, array.length);
Arrays.sort(newArray, Collections.reverseOrder());
return newArray;
}
/**
* 计算字节的md5
* @param array
* @return
*/
public static String md5(byte[] array) {
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(array);
byte[] digest = md.digest();
char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8',
'9', 'a', 'b', 'c', 'd', 'e', 'f' };
// 用字节表示就是 16 个字节
char[] result = new char[16 * 2]; // 每个字节用 16
// 进制表示的话,使用两个字符,
// 所以表示成 16 进制需要 32 个字符
int j = 0; // 表示转换结果中对应的字符位置
for (int i = 0; i < 16; i++) { // 从第一个字节开始,对 MD5
// 的每一个字节
// 转换成 16 进制字符的转换
byte b = digest[i]; // 取第 i 个字节
result[j++] = hexDigits[b >>> 4 & 0xf];
// 取字节中高4位的数字转换,
// >>> 为逻辑右移,将符号位一起右移
result[j++] = hexDigits[b & 0xf];
// 取字节中低 4位的数字转换
}
return new String(result);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
Integer[] t = new Integer[10];
// int[] t = new int[10];
for (int i = 0; i < 10; i++) {
t[i] = i;
}
t = SpeedyKit.reverseArray(t);
System.out.println(SpeedyKit.lastOfArray(t));
}
}