A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 丁宏伟 初级黑马   /  2019-6-26 20:18  /  407 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

菜鸟一只,分享一下自己的心得:
/*
    需求:
        设计一个方法,用于比较两个数组的内容是否相同

    思路:
        1:定义两个数组,分别使用静态初始化完成数组元素的初始化
        2:定义一个方法,用于比较两个数组的内容是否相同
        3:比较两个数组的内容是否相同,按照下面的步骤实现就可以了
            首先比较数组长度,如果长度不相同,数组内容肯定不相同,返回false
            其次遍历,比较两个数组中的每一个元素,只要有元素不相同,返回false
            最后循环遍历结束后,返回true
        4:调用方法,用变量接收
        5:输出结果
*/
public class Test07 {
    public static void main(String[] args) {
        //定义两个数组,分别使用静态初始化完成数组元素的初始化
        int[] arr = {11, 22, 33, 55, 44};
        int[] arr2 = {22, 11, 33, 44, 55};
        System.out.println(xd2(arr, arr2));

    }

    public static boolean xd(int[] a, int[] b) {
        if (a.length != b.length) return false;
        for (int i = 0; i < a.length; i++) {
            if (a[i] != b[i]) return false;
        }
        return true;
    }

    /**
     * 判断两个数组内容是否相同相同返回true
     * @param a
     * @param b
     * @return
     */
    public static boolean xd2(int[] a, int[] b) {
        if (a.length != b.length) return false;//判断数组长度是否相同
        int co = 0;// 计数器 用于累计相等的数量
        int[] bj = new int[a.length];//标记用数组 用于标记被查找的相同元素
        for (int i = 0; i < a.length; i++) {
            for (int j = 0; j < a.length; j++) {
                if (bj[j] == 0) {         //判断是否被查找过
                    if (a[i] == b[j]) {   //判断是否相同
                        bj[j] = 1;        //标记被查找过
                        co++;              //计数
                    }
                }
            }
        }
        if (co != a.length) {  //判断相同元素个数是否与数组长度相同
            return false;
        }else {
            return true;
        }

    }
}

xd方法实现了题目的需求,但是上课的时候一个同学提到了数组顺序不同的问题,于是我写了xd2方法,虽然很简单,而且还有一些可以简化的部分,但我想分享的是:
   int[] bj = new int[a.length];//标记用数组 用于标记被查找的相同元素  bj[j] = 1;        //标记被查找过用数组去标记数组是我想出的一个小技巧,同为数组好操作,而且灵活,可以进行各种标记而且不止一种,在各种需要选择,标记的场景应该还会有其他用处,希望有大神指点。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马