Mar*_*nas 3 java stack contains
我在我的程序中使用堆栈,但是当程序试图检查堆栈中包含哪些元素时,我遇到了问题.我在Stack中使用整数数组.简短的例子是:
Stack<int[]> myStack = new Stack<int[]>();
myStack.push(new int[]{1,2});
myStack.push(new int[]{1,3});
myStack.push(new int[]{1,4});
if (myStack.contains(new int[]{1,3})) {
System.out.println("YES");
} else {
System.out.println("NO");
}
Run Code Online (Sandbox Code Playgroud)
现在它被打印为"NO".我怎么能得到"是"?我知道问题是我没有使用相同的对象,但在现实中我的程序要大得多,我不能用它
int[] myInteger = new int[]{1,3};
myStack.push(myInteger);
myStack.contains(myInteger);
Run Code Online (Sandbox Code Playgroud)
这很简单:int[]通过身份进行比较,
new int[]{1,3}.equals(new int[]{1,3})
Run Code Online (Sandbox Code Playgroud)
返回false.有很多解决方案:
List<Integer>改用.这是非常低效的,但可能就足够了.int[]到一个对象中并实现equals和hashCode.List<int>| 归档时间: |
|
| 查看次数: |
4566 次 |
| 最近记录: |