如何判断String[]与以String[]形式访问的varargs的内容相等?
解决String可变参数与String[]数组内容相等的判断问题
你说得没错——当你把String...可变参数和普通String[]数组用equals()比较时,确实会返回false。这是因为Java里数组的equals()方法默认只校验对象引用是否相同,也就是两个数组是不是内存里的同一个对象,完全不会去比对数组内部的元素内容。
那要直接判断二者内容是否相等,最直接的方法就是使用java.util.Arrays类提供的equals()方法,它专门用来比对两个一维数组的元素内容是否一致。对于String数组来说,它会逐个调用每个元素的equals()方法来验证内容匹配度,完全符合你的需求。
比如你给出的示例代码就很准确:
import java.util.Arrays; public class Example { private String[] params; public String[] getParams() { return params; } public void testForEquality(String... param) { // 用Arrays.equals比对内容是否一致 if (Arrays.equals(getParams(), param)) { // 内容相等时执行逻辑 System.out.println("参数内容完全匹配"); } } }
这里需要注意:String...可变参数在方法内部其实就是以String[]的形式存在的,所以你完全可以把它和普通String[]一起传入Arrays.equals()做比对。
如果以后遇到多维数组的内容比对场景,记得要用Arrays.deepEquals()方法,它会递归比对嵌套数组里的每一层元素内容。
内容的提问来源于stack exchange,提问作者hemanik
相关产品推荐
相关产品推荐

