Chr*_*lor 2 java data-structures
以下Java代码:
public static void main(String args[]) {
int[] x = new int[] {1, 2, 3};
int[] y = new int[] {1, 2, 3};
LinkedList<int[]> list = new LinkedList<int[]>();
list.add(x);
System.out.println("List contains y: " + list.contains(y));
}
Run Code Online (Sandbox Code Playgroud)
给出输出
List contains y: false
Run Code Online (Sandbox Code Playgroud)
这有意义x并且y是对不同存储器位置的引用,但是也存在它们相等的意义(它们具有相同顺序的相同元素).
在此示例中是否存在将返回true查询的数据结构list.contains(y)?
我不相信这是一个Java的数据结构,将返回true对于contains()如你所描述.
您可能知道,问题在于,对于Java数组,equals()只有对象标识的测试而不是大多数人会定义它的"相等".
由于在这种情况下(并且大部分时间)contains()依赖于equals()你,你仍然坚持给定的行为.
您可能必须实现一个List特别覆盖contains(),以便为Java数组提供所需的行为,可能使用Arrays.equals().
我的建议是改为使用a List而不是数组; 你有一个List<List<Integer>>.contains()应该在这种情况下工作,因为它将用于 equals()底层List实现.