m0_37746602
m0_37746602
采纳率31.6%
2018-03-26 11:40 阅读 8.2k
已采纳

比较两个数组中的数据是否相同

5

比如有两个数组:
int[] a = new int[] {1,2,3};
int[] b = new int[] {3,1,2};

只需要判断两数组中的数据是否相同,不用比较顺序

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

13条回答 默认 最新

  • 已采纳
    zuhan888 昂扬向上小青年 2018-03-26 11:57

    简单写了个小demo求给个积分谢谢了。

    int[] a = new int[] {1,2,3};
    int[] b = new int[] {3,1,2};
    int c=0;
    for(int i=0;i<a.length;i++){
    for(int j=0;j<b.length;j++){
    if(a[i]==b[j]){
    c++;
    }
    }
    }
    if(c==a.length&&c==b.length){
    System.out.println("两数组数字相同");
    }else if(c==0){
    System.out.println("两数组数字完全不同");
    }else{
    System.out.println("两数组数字相同个数有:"+c+"个");
    }

    点赞 1 评论 复制链接分享
  • Dai___Dai 10-24 2018-03-26 12:03

    import java.util.Arrays;
    public class Ces {

    public static void main(String[] args) {
        int[] a = new int[] {1,2,3};
        int[] b = new int[] {3,1,2};
        Arrays.sort(a);//对数组进行排序
        Arrays.sort(b);
        int j=0;
        for(int i=0;i<a.length;i++)
        {
            if(a[i]!=b[i])
            {
                j=1;
                break;
            }
        }
        if(j==0)
            System.out.println("两个数组相等");
        else
            System.out.println("两个数组不相等");
    }
    

    }

    点赞 4 评论 复制链接分享
  • Ballase Ballase 2018-03-26 12:01

    楼上的方法都可以,还有也可以用循环直接比

    点赞 1 评论 复制链接分享
  • cxfidc01 红帽01 2018-03-26 11:50

    先对2个数组进行排序,从小到大排序。

    再按顺序比较每个是否相等。

    点赞 评论 复制链接分享
  • u012999957 花無缺 2018-03-26 11:52

    先自己定义排序的 比较 相同就可以了

    点赞 评论 复制链接分享
  • u010519181 u010519181 2018-03-26 11:58

    用一个Hash表来存数组A中的数据,键和值均为A中元素,再用B中的元素提取Hash表中的值,判断是否都相等。

    点赞 评论 复制链接分享
  • Joined joined 2018-03-26 12:00

    1.首先看看数组的多大的,如果两个数组放的数不一样多,那就直接不行;
    2.然后给他俩都排个序,一套循环在判断一下就OK

    点赞 评论 复制链接分享
  • cxdlys cxdlys 2018-03-26 12:39

    先判断length,如过不一样,直接返回不等,
    然后利用arrays.sort(int[]);排序,
    然后for循环

    //把这个方法放到自己的工具类,实例化使用放入两个数据就行,通过返回的Boolean值判断是否相等
    public boolean compare(int[] s,int[] e) {
    if(s.length!=e.length){
    return false;
    }
    Arrays.sort(s);
    Arrays.sort(e);
    for (int i = 0; i < e.length; i++) {
    if(s[i]!=e[i]) {
    return false;
    }
    }
    return true;
    }

    //建议将自己要比较的数组转化为对象类型,这样基本上其他类型也可以用这个方法,而不是单一的数组使用
    Integer[] s = {1,2};
    Integer[] e = {2,1};
    boolean f = compares(s, e);
    //通过f来判断是否相等
    public static boolean compares(Object[] s,Object[] e) {
    if(s.length!=e.length){
    return false;
    }
    Arrays.sort(s);
    Arrays.sort(e);
    for (int i = 0; i < e.length; i++) {
    if(!s[i].equals(e[i])) { //
    return false;
    }
    }
    return true;
    }

    点赞 评论 复制链接分享
  • Victor_Holmes 风清末 2018-03-26 13:05

    用双重循环,第一重循环第一个数组中的数字,第二重循环第二个数组中的数字,将第一个数组中的数字与第二个数组中的数字挨个比较。若相等则输出true

    点赞 评论 复制链接分享
  • weixin_39958082 xujia719 2018-03-26 13:31

    排序后再逐一比较是否相同就行了

    点赞 评论 复制链接分享
  • weixin_41566393 weixin_41566393 2018-03-26 13:54

    整体思路就是先对数组进行排序 从小到大或者从大到小都行 不过两个数组的排序方式要相同 然后利用函数strcmp(a,b) 注意的是利用这个函数需要一个头文件string.h 结果返回值等于零为相同 其他值为不同

    点赞 评论 复制链接分享
  • fggdgh fggdgh 2018-03-26 16:02

    /**
    * 通过比较元素是否同时存在与连个数组中来确定数组中的元素是否相等
    * @param a 数组a
    * @param b 数组b
    * @return 相等返回true,不相等返回false
    */
    public static boolean isEquals(int[] a, int[] b){
    if(a.length != b.length){
    return false;
    }else{
    for(int i = 0;i < a.length ;i++){
    if(Arrays.binarySearch(b, a[i]) < 0){
    //break;
    return false;
    }else{
    return true;
    //continue;
    }

            }
            return true;
        }
    
    }
    
    点赞 评论 复制链接分享
  • yiranhan yiranhan 2018-03-26 11:46

    可以丢到list再比较

    点赞 评论 复制链接分享

相关推荐