做考试答案判断时,考试多选题正确答案可能是多个如{“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("两个数组中的元素值不相同");
}
}
本文探讨了两种检查多选题答案是否正确的实现方式,一种基于排序,另一种采用高效的单遍历。第一种方法虽然直观但需要排序两次,效率较低;第二种方法只需遍历一次答案列表,通过contains方法判断,提高了性能。这两种方法在实际的考试系统或在线答题平台中都有其应用场景。





