检查ArrayList是否包含数组对象

use*_*401 0 java arraylist

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

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

我想检查它是否包含特定的Integer数组.喜欢:

Integer[] myArray = new Integer[]{5,5};
Run Code Online (Sandbox Code Playgroud)

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

有没有办法检查值?

Pat*_*han 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;
  }
}
Run Code Online (Sandbox Code Playgroud)