有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

集合Java堆栈推送()与添加()

我试图使用Stack,但我对术语有点困惑

根据Java文档,我发现Stack类只有push(E e)

并将add(E e)addAll(Collection<? extends E> c)作为从Vector类继承的方法

它们是否具有相同的功能,或者最好使用push(...)将元素插入Stack对象

换句话说,如果我使用add(...)而不是push(...),我会遇到任何问题吗


共 (6) 个答案

  1. # 1 楼答案

    这都是关于继承的问题,如果它是Stack,您应该使用push()来明确并遵循模型。但事实上,根据Java SE规范:

    将项目推到堆栈顶部。这与:addElement(item)的效果完全相同

  2. # 2 楼答案

    如果您使用的是Stack,那么应该使用push(),因为这是将元素添加到堆栈中的标准方法(由于Stack的数据结构的思想)。这意味着“栈顶”是您刚刚push()编辑的项

    您应该只在Stack的顶部添加和删除数据,如果您认为需要其他方式添加数据(添加到中间或结尾),那么我建议不要使用Stack,因为它会使代码更难理解

    编辑:(反映问题编辑) 正如我所提到的,如果我处理的是一个Stack,我将期望看到add()add()不是使用Stack的标准语法,push()是。我建议只使用javadoc主体中定义的函数,除非您特别需要继承的函数

  3. # 3 楼答案

    (对不起,如果我的英语不好,我来自MX)

    理论上,是一样的,因为add是所有泛型类的方法。。。但是非常推荐使用push,因为您使用的是一个堆栈,如果您使用“push”方法而不是“add”,也许您会了解更多

  4. # 4 楼答案

    Kalyanaraman Santhanam:

    Edit: Will I encounter any issues if I use add(...) instead of push(...)?

    当然,您不会遇到任何问题,因为addList接口以及Stack的一部分,但是您应该注意到代码的进一步可读性以及其他程序员在其中的意图push方法将为他们提供一条线索,表明他们正在使用Stack对象,他们将清楚地知道期望从中得到什么。还请注意push的返回值与add不同(前者具有“pushobject”类型,后者仅为boolean响应)

  5. # 5 楼答案

    唯一的区别是返回类型

    System.out.println(stack.push("1"));
    
    Output : 1
    
    System.out.println(stack.add("2"));
    
    Output : true
    

    但建议对堆栈使用推送方法

  6. # 6 楼答案

    它们是一样的

    JavaDoc开始:

    Pushes an item onto the top of this stack. This has exactly the same effect as:

    addElement(item)