2014-07-12 87 views
0

有没有办法检查一个ArrayList是否包含一个对象数组? 例如,我有的ArrayList检查ArrayList是否包含数组对象

ArrayList<Integer[]> myList = new ArrayList<Integer[]>(); 
mylist.add(new Integer[]{5,5}); 
mylist.add(new Integer[]{1,1}); 

我想检查它是否包含一个特定的整数数组。像:

Integer[] myArray = new Integer[]{5,5}; 

如果我使用myList.containts(myArray);它应该返回true,但它会检查Integer对象是否被包含,而不是数组Values。

有没有办法来检查值?

+0

你必须做你自己的,价值无法评估这个样子。 –

回答

7

java.util.Arrays包含几个阵列相关的实用方法,包括Arrays.deepEquals(Object[] a1, Object[] a2)。您可以扫描列表中寻找,根据该测试等于new Integer[]{5,5}任何元素:

import java.util.ArrayList; 
import java.util.Arrays; 
import java.util.List; 

public class Test { 
    public static void main(String[] args) { 
    ArrayList<Integer[]> myList = new ArrayList<Integer[]>(); 
    myList.add(new Integer[] { 5, 5 }); 
    myList.add(new Integer[] { 1, 1 }); 
    System.out.println(deepContains(myList, new Integer[] { 5, 5 })); 
    System.out.println(deepContains(myList, new Integer[] { 5, 3 })); 
    } 

    public static boolean deepContains(List<Integer[]> list, Integer[] probe) { 
    for (Integer[] element : list) { 
     if (Arrays.deepEquals(element, probe)) { 
     return true; 
     } 
    } 
    return false; 
    } 
} 
相关问题