首页 > 编程语言 >Java 实现Arrays 数组工具类

Java 实现Arrays 数组工具类

时间:2023-04-18 09:59:43浏览次数:36  
标签:arr Java Arrays param int length 数组 return

Class Arrays

是 java 工具包自带的非常强大的数组工具类,今天手工实现了一部分功能,部分参考实现如下

public class MyArrays {
    //最大值

    /**
     * 获取int数组最大值
     *
     * @param arr:代遍历的数组
     * @return 数组最大值
     */
    public int getMax(int[] arr) {
        int max = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (max < arr[i]) {
                max = arr[i];
            }
        }
        return max;
    }

    /**
     * 获取数组最小值
     *
     * @param arr 代遍历数组
     * @return 数组最小值
     */
    public int getMin(int[] arr) {
        int min = arr[0];
        for (int i = 0; i < arr.length; i++) {
            if (min > arr[i]) {
                min = arr[i];
            }
        }
        return min;
    }

    /**
     * 求数组元素和
     *
     * @param arr 待遍历数组
     * @return 数组元素和
     */
    public int getSUm(int[] arr) {
        int sum = arr[0];
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum;
    }

    /**
     * 求数组元素均值
     *
     * @param arr 待遍历数组
     * @return 数组均值
     */
    public int getAvg(int[] arr) {
        return getSUm(arr) / arr.length;
    }

    /**
     * 遍历数组
     *
     * @param arr
     */
    public void print(int[] arr) {
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            if (i == 0) {
                System.out.print(arr[i]);
            } else {
                System.out.print("," + +arr[i]);
            }
        }
        System.out.println("]");
    }

    /**
     * 数组复制
     *
     * @param arr
     * @return
     */
    public int[] copy(int[] arr) {
        int[] newArr = new int[arr.length];
        for (int i = 0; i < arr.length; i++) {
            newArr[i] = arr[i];
        }
        return newArr;
    }

    /**
     * 数组反转
     *
     * @param arr
     */
    public void reverse(int[] arr) {
        for (int i = 0, j = arr.length - 1; i < j; i++, j--) {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }

    /**
     * 数组排序
     *
     * @param arr
     */
    public void sort(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            for (int j = 0; j < arr.length - 1 - i; j++) {
                if (arr[j] > arr[j + 1]) {
                    swap(arr, j, j + 1);
                }
            }
        }
    }

    /**
     * 自定义排序顺序 冒泡排序
     *
     * @param arr
     * @param n
     */
    public void sort(int[] arr, String method) {
        if ("asc".equals(method)) {
            for (int i = 0; i < arr.length - 1; i++) {
                for (int j = 0; j < arr.length - 1 - i; j++) {

                    if (arr[j] > arr[j + 1]) {
                        swap(arr, j, j + 1);
                    }
                }
            }
        } else if ("desc".equals(method)) {
            for (int i = 0; i < arr.length - 1; i++) {
                for (int j = 0; j < arr.length - 1 - i; j++) {
                    if (arr[j] < arr[j + 1]) {
                        swap(arr, j, j + 1);
                    }
                }
            }
        } else {
            System.out.println("排序规则有误!");
        }
    }

    /**
     * 数组元素交换
     *
     * @param arr 数组
     * @param i   待交换元素 i
     * @param j   待交换元素 j
     */
    private void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }


    /**
     * 线性查找指定值
     *
     * @param arr   数组
     * @param value 查找值
     * @return:-1 表示未找到,否则就返回索引值
     */
    public int linearSearch(int[] arr, int value) {
        for (int i = 0; i < arr.length; i++) {
            if (value == arr[i]) {
                return i;
            }
        }
        //代码执行到这里即为 数组中未查询到制定值
        return -1;
    }
}

测试类

public class MyArraysTest {
    public static void main(String[] args) {
        MyArrays myArrays = new MyArrays();
        int[] arr = {1, 33, 88, 0, -1, 76};

        System.out.println(myArrays.getMax(arr));
        System.out.println(myArrays.getAvg(arr));
        System.out.println(myArrays.linearSearch(arr, 8));
        myArrays.sort(arr,"desc");
        myArrays.print(arr);
    }
}

标签:arr,Java,Arrays,param,int,length,数组,return
From: https://www.cnblogs.com/wdh01/p/17299867.html

相关文章

  • java集合的stream操作
     //获取user里面所有id集合List<String>idList=list.stream().map(User::getId).collect(Collectors.toList());//list转换为id为key的mapMap<String,User>userMap=list.stream().collect(Collectors.toMap(User::getId,a->a,(k1,k2)->k1));//li......
  • java如何将JSONObject转成实体对象
    importcom.google.gson.Gson;importorg.json.JSONObject;//...JSONObjectjson=newJSONObject("{\"name\":\"JohnSmith\",\"age\":30}");Gsongson=newGson();Personperson=gson.fromJson(json.toString()......
  • Java-Day-10(Object 常用类 + JDK 源码 + 断点调试)
    Java-Day-10Object常用类equals方法==与equals==是一个比较运算符既可以判断基本类型,又可以判断引用类型如果判断基本类型,判断的是值是否相等如果判断引用类型,判断的就是地址是否相同,即判断是否是一个对象equals是Object类中的方法,只能判断引用类型默认......
  • Java-Day-11(项目零钱通 + 章节练习)
    Java-Day-11项目零钱通功能搭建菜单显示完成零钱明细完成收益入账完成消费功能实现退出完善,进行y/n确认判断入账、消费金额的合理性面向过程的代码packagecom.hspJava;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.Scanne......
  • java进程保持运行
    将jar包放进服务器,运行java-jarxxx.jar是可以跑起来的,但是把XShell关闭后,就表示与服务器断开了,网页也就进不去了。那么让jar包一直处于运行状态的方法是nohupjava-jarxxx.jar&按下回车后再输入exit注意,一定要输入exit,才能让其一直运行,这是最重要的一步然后关闭XShell,也......
  • java 日志脱敏处理
    1publicstaticvoidmain(String[]args)throwsException{2Patternpattern=Pattern.compile("[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}");3Stringtext="\"Joe1\"55656kkk;[email protected]&......
  • java面试提问记录
    面试官-薪资问题?区间如18~22k 怎样考虑?工作职责范围,复杂度,如技术加管理?适当上浮(1k、2k)工作强度,比较常加班?适当上浮(1k、2k)工作福利,是否有,啥都没有?适当上浮(1k、2k) 面试者(自己)提问试用期是否能提供全薪?是否有减薪的操作?比如绩效......
  • Java语言特点?编译与解释并存?
    Java语言特点:·面向对象(封装,继承,多态);·平台无关性(Java虚拟机实现平台无关性);·支持多线程(C++语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而Java语言却提供了多线程支持);·支持网络编程并且很方便(Java语言诞生本身就是为简化网络......
  • 有序数组的平方
    有序数组的平方给你一个按非递减顺序排序的整数数组nums,返回每个数字的平方组成的新数组,要求也按非递减顺序排序。示例1:输入:nums=[-4,-1,0,3,10]输出:[0,1,9,16,100]解释:平方后,数组变为[16,1,0,9,100]排序后,数组变为[0,1,9,16,100]Python解一:classSolution(object......
  • 长度最小的子数组
    长度最小的子数组给定一个含有n个正整数的数组和一个正整数target。找出该数组中满足其和≥target的长度最小的连续子数组[numsl,numsl+1,...,numsr-1,numsr],并返回其长度。如果不存在符合条件的子数组,返回0。示例1:输入:target=7,nums=[2,3,1,2,4,3]......