JAVA ArrayList:如何知道它是否包含String数组? [英] JAVA ArrayList : How to know whether it contains a String array or not?

查看:113
本文介绍了JAVA ArrayList:如何知道它是否包含String数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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数组. 怎么做,为什么?

Console said "false." I have an ArrayList and I can't check whether it contains a particular String array. How to do and why?

推荐答案

contains使用equals方法实现检查对象的相等性.但是,对于数组,equals等效于引用相等. IE. array1.equals(array2)转换为array1 == array2.

contains checks object equality using the equals method implementation. For arrays, however, equals is equivalent to reference equality. I.e. array1.equals(array2) translates to array1 == array2.

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

In the above, the new String[]{"one", "abc"}) passed to the contains method will create a new array which will be different than the one originally added to the ArrayList.

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

One way to do the check is to loop over each array in the ArrayList and check the equality using Arrays.equals(array1, array2):

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

另一种方法是使用commons-lang的nofollow> ArrayUtils.isEquals .

Another way is to use ArrayUtils.isEquals from Apache commons-lang.

这篇关于JAVA ArrayList:如何知道它是否包含String数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆