当前位置: 首页 > 面试题库 >

JAVA ArrayList:如何知道它是否包含String数组?

杨建章
2023-03-14
问题内容
import java.util.ArrayList;    
public class Test {
        public static void main (String[] args){
            ArrayList<String[]> a = new ArrayList<String[]>();
            a.add(new String[]{"one", "abc"});
            a.add(new String[]{"two", "def"});
            if(a.contains(new String[]{"one", "abc"})){
                System.out.println(true);
            }else{
                System.out.println(false);
            }
        }
    }

控制台说“假”。我有一个ArrayList,我无法检查它是否包含特定的String数组。怎么办,为什么?


问题答案:

contains使用equals方法实现检查对象是否相等。但是,对于数组,equals等效于引用相等。即array1.equals(array2)翻译为array1 == array2

在上面,new String[]{"one", "abc"})传递给contains方法的将创建一个
数组,该数组与最初添加到中的数组不同ArrayList

一种检查方法是遍历中的每个数组,ArrayList并使用Arrays.equals(array1, array2)以下命令检查是否相等:

for(String[] arr : a) {
        if(Arrays.equals(arr, new String[]{"one", "abc"})) {
            System.out.println(true);
            break;
        }
}

另一种方法是ArrayUtils.isEquals从Apache
使用commons-lang



 类似资料: