JAVA比较两个数组中的元素是否相同

本文探讨了两种检查多选题答案是否正确的实现方式,一种基于排序,另一种采用高效的单遍历。第一种方法虽然直观但需要排序两次,效率较低;第二种方法只需遍历一次答案列表,通过contains方法判断,提高了性能。这两种方法在实际的考试系统或在线答题平台中都有其应用场景。
摘要由CSDN通过智能技术生成

做考试答案判断时,考试多选题正确答案可能是多个如{“a”, “b”, “c”},但可能出现不同的选择顺序,所以要对其进行判断
代码实现如下

/**
     * 性能差,因为要排序两次
     */
    @Test
    public void test1() {
        String[] rightAnswer = {"a", "b", "c"};
        // bac cba ...不管什么顺序结果都一样
        String[] reply = {"a", "c", "b"};

        Arrays.sort(rightAnswer);
        Arrays.sort(reply);
        //结果为 两个数组中的元素值相同
        if (Arrays.equals(rightAnswer, reply)) {
            System.out.println("两个数组中的元素值相同");
        } else {
            System.out.println("两个数组中的元素值不相同");
        }
    }


    /**
     * 性能高,只用遍历一遍
     */
    @Test
    public void test2() {
        String[] s1 = {"a", "b", "c"};
        // bac cba ...不管什么顺序结果都一样
        String[] s2 = {"a", "c", "b"};

        List<String> rightAnswer = Arrays.asList(s1);
        List<String> reply1 = Arrays.asList(s2);

        Boolean judge = true;
        for (String s : reply1) {
            if (!rightAnswer.contains(s)) {
                judge = false;
                break;
            }
        }
        //结果为 两个数组中的元素值相同
        if (judge) {
            System.out.println("两个数组中的元素值相同");
        } else {
            System.out.println("两个数组中的元素值不相同");
        }

    }
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值