【发布时间】:2011-05-26 23:04:12
【问题描述】:
以下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));
}
给出输出
List contains y: false
这是有道理的,因为x 和y 是对不同内存位置的引用,但也有一种意义,它们是相等的(它们以相同的顺序具有相同的元素)。
在本例中,是否存在将true 返回到查询list.contains(y) 的数据结构?
【问题讨论】:
-
数组没有定义合理的价值平等。这需要一个数组感知结构(非标准或),或者根据需要将数组包装在支持
equals的类中——在这种情况下,它将按预期工作,尽管工作量更大。某些数据结构(例如 HashMap)确实允许指定自定义可比较对象。 -
正如这里的许多人所说,标准库中没有这样的内置数据结构。你想达到什么目的?您是否尝试实现
isSubsetOf、isSubstringOf或其他?isSubstringOf我的意思是确切的数组应该是原始数组的一部分。
标签: java data-structures