我正在尝试使用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 等是完美的,一切都有自己的缺陷。