一些自用的便捷工具,不定期更新

自己项目里用到的工具类,不定时更新

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));
	}
}

你可能感兴趣的:(F#,J#)