为什么Java中的Stack
具有empty()
方法以及通常的isEmpty()
? Stack
扩展的所有抽象类都有isEmpty()
方法。
答案 0 :(得分:46)
我认为OP的问题更多的是:为什么有重复的方法,给定empty()
和isEmpty()
做同样的事情?
如果仔细查看一下,在Vector
,Stack
和HashTable
中,会有更多这样的示例:有些方法做类似但有不同名称的方法。
以下是历史简介:
在JDK 1.0时,没有" Collection"框架。 Stack
,Vector
,HashTable
是Java提供的一些基本数据结构。
后来在JDK 1.2中, Collection 框架被添加到JDK中,并引入了标准接口(如List
,Map
)。
然而,在这些新的标准集合接口中,方法以不同的约定命名。命名约定的变化很可能受JDK 1.2中引入的Java Bean标准的影响。这些方法名称与旧Stack
,Vector
和HashTable
类中的名称不同。例如,它在原始类中被命名为empty()
,但被命名为isEmpty()
Collection
接口。
为了使Stack
,Vector
和HashTable
与收藏框架兼容,Stack
,Vector
和HashTable
实施了相应的集合接口。同时,为了向后兼容,保留了旧方法。
因此"重复"你现在看到的方法。
答案 1 :(得分:0)
两个返回布尔值的唯一区别是isEmpty是指向矢量的同步点,而null不是指向堆栈的同步点