有没有办法检查ArrayList是否包含对象数组? 例如,我有一个arrayList
ArrayList<Integer[]> myList = new ArrayList<Integer[]>();
mylist.add(new Integer[]{5,5});
mylist.add(new Integer[]{1,1});
我想检查它是否包含特定的Integer数组。像:
Integer[] myArray = new Integer[]{5,5};
如果我使用myList.containts(myArray);它应返回true,但它会检查Integer对象是否包含,而不是数组值。
有没有办法检查数值?
答案 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;
}
}