我正在尝试使用Stack,但我对术语有些困惑。
我发现Stack该类仅push(E e)根据 Java 文档。
并且具有add(E e)和addAll(Collection<? extends E> c)作为从Vector类继承的方法。
它们是否具有相同的功能,或者更好地用于push(...)将元素插入Stack对象。
换句话说,如果我使用add(...)而不是,我会遇到任何问题push(...)吗?
我正在尝试使用Stack,但我对术语有些困惑。
我发现Stack该类仅push(E e)根据 Java 文档。
并且具有add(E e)和addAll(Collection<? extends E> c)作为从Vector类继承的方法。
它们是否具有相同的功能,或者更好地用于push(...)将元素插入Stack对象。
换句话说,如果我使用add(...)而不是,我会遇到任何问题push(...)吗?
Kalyanaraman Santhanam:
编辑:如果我使用 add(...) 而不是 push(...),我会遇到任何问题吗?
当然,您不会遇到任何问题,因为add它是List接口的一部分,也是Stack. push方法会给他们一个线索,表明他们正在使用该Stack对象,他们将确切地知道会发生什么。另请注意,push返回值不同于add(前者具有“推送对象”类型,后者只是boolean响应)
(对不起,如果我的英语不好,我来自 MX)。
从理论上讲,是一样的,因为 add 是所有泛型类的方法...但是非常推荐使用 push,因为您使用的是堆栈,如果您使用“push”方法而不是“add”,也许你会明白一点...
唯一的区别是返回类型
System.out.println(stack.push("1"));
Output : 1
System.out.println(stack.add("2"));
Output : true
但是建议对 Stack 使用 Push 方法
如果您使用的是 aStack那么您应该使用push(),因为这是将元素添加到堆栈中的标准方法(由于 a 的数据结构的想法Stack)。这意味着“堆栈顶部”是您刚刚push()编辑的项目。
您应该只在 a 的顶部添加和删除Stack,如果您认为需要其他方式来添加数据(添加到中间或末尾),那么我建议您不要使用 a Stack,因为它会使您的代码更难理解。
编辑:(反映问题编辑)正如我所提到的,我不希望看到add()我是否正在处理Stack. add()不是使用 a 的标准语法Stack,push()是。我建议只使用在主体中定义的函数,javadoc除非你特别需要那些被继承的函数。
这完全是关于继承问题,如果它是一个Stack你应该使用push()清楚并遵循模型。但是,实际上来自 Java SE 规范:
将一个项目推入此堆栈的顶部。这与以下效果完全相同:addElement(item)
根据我的分析,我看不出 add 和 push 方法的输出之间没有区别。请参考下面的代码和输出..
导入 java.util.Stack;
公共类 StackDemo {
静态堆栈堆栈=新堆栈();
公共静态无效主要(字符串[]参数){
// TODO 自动生成的方法存根
添加(10);
添加(20);
添加(30);
打印();
推(40);
打印();
流行音乐();
打印();
推(50);
打印();
}
静态无效打印(){
System.out.println(stack);
}
静态无效添加(int item){
stack.add(项目);
}
静态无效推送(int item){
stack.push(项目);
}
静态无效窥视(){
System.out.println(stack.peek());
}
静态 int pop() {
返回栈.pop();
}
}
*
[10, 20, 30]
[10, 20, 30, 40]
[10, 20, 30]
[10, 20, 30, 50]
*
是的,我在使用它们时找不到 push() 和 add() 方法之间的太大区别。但在使用 Stack 时更喜欢使用 push()
我最近在尝试编码问题时遇到的(实际上是导致我搜索相同问题的情况)是:当我使用 stack.add(string object) 时,我的代码超出了时间限制。当我将 .add 更改为 .push 即 stack.push(string object) 时,它成功解决了。从字面上看,我没有改变任何其他内容(除了 .add -> .push),并且我的代码及时执行!
正如大家所说,它与“推”具有相同的效果。有人可能会问,但为什么呢?我最近读了这个主题,它说它违反了“最小惊讶原则”的原则。所以这就像 API 的设计缺陷,而不是大问题。这告诉我们,没有任何软件、框架、API 等是完美的,一切都有自己的缺陷。