自己项目里用到的工具类,不定时更新
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));
}
}
分享到:
相关推荐
【SComps: 自用React组件库,不定期更新】是一个个人维护的React组件集合,旨在为开发者提供一套实用、可复用的UI组件,以提高开发效率和代码质量。这个组件库是用TypeScript编写的,充分利用了TypeScript的静态类型...
外壳扩展工具包(ShellKit)是一款专为Windows操作系统设计的实用工具集,它极大地丰富了用户在文件资源管理器中的右键菜单,提供了更多便捷的操作选项。通过将各种实用功能集成到右键菜单,ShellKit使得文件和文件夹...
- **更新维护**:定期更新SDK及其工具至最新版本,以便获取最新的修复和改进。 通过上述介绍,我们可以看出Android SDK是开发Android应用不可或缺的一部分。合理利用这些工具和资源,可以极大地提升开发效率和应用...
它以其直观的界面、丰富的功能和出色的性能,使得数据库的管理和开发变得更加高效和便捷。本文将深入探讨Navicat15的主要特性、安装过程以及如何利用其进行MySQL数据库的操作。 一、Navicat15的主要特性 1. 多种...
《女生自用剑网三机器人-mini_jx3_bot》是一款专为女性玩家设计的剑网三游戏辅助程序,旨在提供便捷的游戏体验。"mini_jx3_bot"这个名字简洁明了,直指其作为迷你版剑网三自动化工具的核心功能。在深入探讨这款...
同时,定期更新软件至最新版本,可获取最新的功能改进和安全补丁。 总结来说,WinRAR作为一款强大的压缩工具,因其高效的压缩技术、强大的安全特性以及便捷的操作方式,深受广大用户的喜爱。无论是在个人电脑还是...
11. **更新与支持**:福昕公司定期更新软件,修复已知问题,提升用户体验,并提供及时的技术支持和服务。 总结,福昕阅读器迷你版以其精简的功能集和高效的性能,为用户提供了一种轻量级的PDF阅读解决方案,尤其...
描述中的 "自用带win10自动添加打印机" 暗示了这个压缩包可能包含了一些定制化的脚本或配置,这些内容能够帮助Windows 10用户无需手动操作就能识别并安装远程Linux服务器上的USB打印机。这通常涉及到USBIP客户端的...
本文档"自用自写的linux帮助文档"提供了一种便捷的方式,帮助用户快速查询和学习Linux命令。 首先,描述中提到的“将这个目录加到环境变量里面”,这是指将该文档所在的路径添加到用户的PATH环境变量中。PATH环境...
"毕设资料,自用备份资料"这个标题暗示了备份是针对个人毕业设计项目的重要资料,目的是确保这些资料的安全性,避免因意外情况如硬件故障、病毒感染或人为误操作导致的数据丢失。 【备份类型】 1. 完全备份:这种...
本压缩包提供的“自动校时”绿色小软件是个人自用的工具,用于确保计算机系统的时间准确无误。 自动校时软件的主要作用是定期或者根据设定的条件,自动从权威的时间服务器获取准确的时间,并调整本地计算机系统的...
标题“图片:自用图床”表明这是一个存储个人或项目使用的图像资源的集合,通常用于在网站、博客、社交媒体或其他在线平台上传和分享图片。在IT行业中,图床指的是一个集中存储图片的地方,方便在需要时快速引用。...
- Windows版Redis不支持哨兵(Sentinel)系统,因此高可用性部署可能需要借助其他工具或服务。 7. **性能调优**: - 调整内存大小限制、最大客户端连接数等配置。 - 使用虚拟内存(vm)或AOF/RDB策略来平衡性能...
Toad是一款广受欢迎的数据库管理工具,特别是在Oracle数据库管理领域,它被许多...总的来说,Toad11绿色版是一个便捷的数据库管理工具,尤其适合需要在多台电脑上快速工作的用户。但使用时需谨慎,确保安全性和稳定性。
6. **后续维护**:越狱后的设备需要定期更新Cydia中的补丁和插件,以保持系统的稳定性和安全性。此外,当Apple发布新的iOS固件时,用户需要考虑是否升级,因为新的固件可能会封堵现有的越狱漏洞。 7. **法律问题**...
1. 公共运输业:面向全社会提供定时定点的运输服务,包括定期定线、定线不定期和定区不定期三种模式。 2. 契约运输业:与特定客户签订合同,提供定制化的运输服务。 3. 自用运输业:企业自有的运输车队,主要用于...
7. **更新与维护**:定期检查软件更新,保持安装工具的最新状态,以获取新的功能和修复已知问题。 总的来说,ISPRO6作为一款安装制作工具,其精简版为个人用户提供了一种便捷的打包解决方案,尽管它可能不适合所有...
因此,定期更新和检查封装库,确保其中的封装与最新的元件规格相符,是每个电子设计师都应该养成的良好习惯。 总的来说,这个“altium designer好用的封装库”为用户提供了宝贵的资源,不仅节省了寻找和创建封装的...
【描述】中的关键信息表明,这个小程序并未追求高性能,而是作为作者的个人项目,可能会根据时间安排进行不定期的更新。这意味着源代码可能不那么完善,但足以体现云开发的基本应用和小程序的基本架构。"没空就凑合...
Hexo 是一个基于 Node.js 的静态站点生成器,它允许用户快速、便捷地创建静态博客。这个名为 "blog_source" 的压缩包文件包含了作者自用的 Hexo 博客源码备份,适用于 Windows 10 操作系统,并采用了 Next 主题。...