工具(二):数组常用操作工具类
2017-06-01 15:10
197 查看
老规矩,上代码,使用方式,我想注释写的很明确了,如果看不懂,导入到你的java工程中,测试下,如果有问题,请在评论中说明,谢谢。要坚信:动手就会有收获!
package com.wdy.tools.utils.arrayutil; import java.util.Arrays; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class ArrayUtil { private static final Log log = LogFactory.getLog(ArrayUtil.class); /** * 数组所有元素求和 * * @param arr * 要求和的数组(数组为Object类型,但元素是数值类型) * @return */ public static double getArraySumValue(Object[] arr) { double[] dou = getObjectArrayToDoubleArray(arr); double sum = 0.0; for (int i = 0; i < dou.length; i++) { sum += dou[i]; } return sum; } /** * 获取两个数组的累加后的数组(要求两个数组元素个数相同) * * @param arr1 数组(数组为Object类型,但元素是数值类型) * @param arr2 数组(数组为Object类型,但元素是数值类型) * @return 求和后的新数组 */ public static double[] getTwoArraySumValue(Object[] arr1, Object[] arr2) { double[] dou1 = getObjectArrayToDoubleArray(arr1); double[] dou2 = getObjectArrayToDoubleArray(arr2); double[] dou = new double[dou1.length]; if (arr1.length==arr2.length) { for (int i = 0; i < dou1.length; i++) { dou[i] = dou1[i] + dou2[i]; } }else { log.info("两个数组的长度不相同"); } return dou; } /** * 获取数据的字符串形式{,,,} * @param dou 要操作的double类型数组 * @return 返回数据元素拼接的字符串,包含花括号,eg:{, , ,} */ public static String getArrayToString(double[] dou) { String arrString = "{"; if (dou.length > 0) { for (int i = 0; i < dou.length; i++) { if (i == 0) { arrString += dou[i]; } else { arrString += ("," + dou[i]); } } } arrString += "}"; return arrString; } /** * 获取两个数组的相比后的数组(要求两个数据的长度相同) * * @param arr1 * 分子数组(Object[]) * @param arr2 * 分母数组(Object[]) * @return */ public static double[] getTwoArrayRateValue(Object[] arr1, Object[] arr2) { double[] dou1 = getObjectArrayToDoubleArray(arr1); double[] dou2 = getObjectArrayToDoubleArray(arr2); double[] dou = new double[dou1.length]; for (int i = 0; i < dou1.length; i++) { if (dou2[i] != 0) { dou[i] = dou1[i] / dou2[i]; } else { dou[i] = 0.0; } } return dou; } /** * 获取两个数组的相比后的数组(要求两个数据的长度相同) * * @param arr1 * 分子数组(double[]) * @param arr2 * 分母数组(Object[]) * @return */ public static double[] getTwoArrayRateValue(double[] dou1, Object[] arr2) { // double[] dou1 = getObjectArrayToDoubleArray(arr1); double[] dou2 = getObjectArrayToDoubleArray(arr2); double[] dou = new double[dou1.length]; for (int i = 0; i < dou1.length; i++) { if (dou2[i] != 0) { dou[i] = dou1[i] / dou2[i]; } else { dou[i] = 0.0; } } return dou; } /** * 获取Object{元素为double类型}数组的最大值所在的索引位置(0开始) * * @param obj * 要操作的Object数组 * @return */ public static int getArrayMaxValueIndex(Object[] obj) { double[] dou = getObjectArrayToDoubleArray(obj); double max; max = dou[0]; int j = 0; for (int i = 0; i < dou.length; i++) { if (dou[i] > max) { j = i; } } return j; } /** * 获取Object{元素为double类型}数组的最大值 * * @param arr * @return */ public static double getArrayMaxValue(Object[] arr) { double[] dou = getObjectArrayToDoubleArray(arr); double max; max = dou[0]; for (int i = 0; i < dou.length; i++) { if (dou[i] > max) { max = dou[i]; } } return max; } /** * 获取Object{元素为double类型}数组的最小值所在的索引位置(0开始) * * @param obj * 要操作的Object数组 * @return */ public static int getArrayMinValueIndex(Object[] obj) { double[] dou = getObjectArrayToDoubleArray(obj); double min; min = dou[0]; int j = 0; for (int i = 0; i < dou.length; i++) { if (dou[i] < min) { j = i; } } return j; } /** * 获取Object{元素为double类型}数组的最小值 * * @param arr * @return */ public static double getArrayMinValue(Object[] arr) { double[] dou = getObjectArrayToDoubleArray(arr); double min; min = dou[0]; for (int i = 0; i < dou.length; i++) { if (dou[i] < min) { min = dou[i]; } } return min; } /** * 获取double数组的最大值所在的索引位置(0开始) * * @param arr * @return */ public static int getArrayMaxValueIndex(double[] dou) { double max; max = dou[0]; int j = 0; for (int i = 0; i < dou.length; i++) { if (dou[i] > max) { j = i; } } return j; } /** * 获取double数组的最大值 * * @param arr * @return */ public static double getArrayMaxValue(double[] dou) { double max; max = dou[0]; for (int i = 0; i < dou.length; i++) { if (dou[i] > max) { max = dou[i]; } } return max; } /** * 获取double数组的最小值所在的索引位置(0开始) * * @param arr * @return */ public static int getArrayMinValueIndex(double[] dou) { double min; min = dou[0]; int j = 0; for (int i = 0; i < dou.length; i++) { if (dou[i] < min) { j = i; } } return j; } /** * 获取double数组的最小值 * * @param arr 要操作的数组 * @return */ public static double getArrayMinValue(double[] dou) { double min; min = dou[0]; for (int i = 0; i < dou.length; i++) { if (dou[i] < min) { min = dou[i]; } } return min; } /** * 将一个object形式的数字的数组转换为double[]数组 * * @param obj * @return */ public static double[] getObjectArrayToDoubleArray(Object[] obj) { double[] dou = null; if (obj != null) { dou = new double[obj.length]; for (int i = 0; i < obj.length; i++) { dou[i] = Double.parseDouble(obj[i].toString()); } } return dou; } /** * 将数组进行升序(小~大)排序 * @param dou * @return */ public static double[] SortArrayByAsc(double[] dou){ Arrays.sort(dou);//从小到大排序 return dou; } /** * 将数组进行降序(大~小)排序 * @param dou * @return */ public static double[] SortArrayByDesc(double[] dou){ Arrays.sort(dou);//从小到大排序 ArrayUtils.reverse(dou);//再反转,成为降序,从大到小 return dou; } //Es6数组去重 testArr() { console.log(1) var arr = [1, 2, 3, 4, 4, 4, 5, 6, 7, 7, 7, 8, 9, 9, 9, 9, 0, 0, 0, 12]; var arr2 = [...new Set(arr)]; console.log(arr2); }, }测试的代码,这里就不写了,请多动手!
相关文章推荐
- 最全面的Java字节byte操作,处理Java基本数据的转换及进制转换操作工具,流媒体及java底层开发项目常用工具类
- Java数组操作的常用工具类
- 工具(八):文件常用操作工具类
- Java_int、double型数组常用操作工具类(分享)
- ArrayTool是一个定义了操作数组常用的工具类,比如求最大值,排序,查找
- 操作java数组的常用工具类
- java中操作数组的常用工具类
- Java基础之集合框架--Arrays工具类(专门操作数组的工具类)
- java中常用的工具类(二)FtpUtil, 汉字转拼音,zip工具类,CollectionUtil,MathUtil,
- java中常用的工具类(三)连接数据库的综合类,DES加密和解密,Base64,ExcelUtil工具类,
- Swift对数组的常用基本操作
- Android基础常用日期操作工具类
- java日期操作常用工具
- 涉及数据包的一些操作 的常用工具以及库
- iOS开发-工具:14个Xcode中常用的快捷键操作
- JavaScript中数组操作常用方法
- 常用代码备忘录(封装 Apache Commons 的 DbUtils 实现的数据库操作工具类)-DBUtil.java
- Python 列表 list 数组 array 常用操作集锦
- 12、javascript中数组常用的函数操作总结
- JavaScript数组常用操作总结