好的,所以我已经使用Java很长一段时间了,最近我一直在准备我的OCJP考试.我想知道是否有人能够提供任何有关为什么方法名称"民意调查"(而不是更传统的"流行")和"提议"(而不是更传统的"推动")被选中的原因?我正在专门研究java.util.Queue接口,但也会对更一般的解释感兴趣:)
这实际上是一个学术问题,而不是任何特定的编码方案,因为我只是想弄清楚为什么Sun(因为这是在Oracle收购之前完成的)会选择他们所做的名字.
哦,在任何人决定将我钉在十字架上或扔掉链接到lmgtfy之前...我已经看过google,yahoo,wiki,bing等所以如果我忽略了一些明显的搜索条件或错过了一些旧帖子,解释它然后我提前道歉.
Tom*_*icz 37
因为这些方法在JavaDoc中有不同的语义.add/ remove是无条件的offer/ poll 返回特殊值:
offer仅提供新值,但可能不被接受,例如,如果队列已满
poll只轮询价值,但我们接受价值可能不存在的事实.
更复杂的是,BlockingQueue引入了另一对阻塞add/ 的方法remove.当然他们可以使用相同的命名与一堆参数/标志,
smellyGet(boolean blocking, boolean failOnEmpty)
Run Code Online (Sandbox Code Playgroud)
但你不认为这是一个更好的设计吗?
| Throws ex. | Special v. | Blocks | Times out
--------+------------+------------+--------+---------------------
Insert | add(e) | offer(e) | put(e) | offer(e, time, unit)
Remove | remove() | poll() | take() | poll(time, unit)
Examine | element() | peek() | N/A | N/A
Run Code Online (Sandbox Code Playgroud)
*https://meta.stackexchange.com/questions/73566
你把Queue和Stack混淆了; push和pop与后者相关联.
在适当的生产者/消费者环境中考虑Queue; 民意调查和报价将更有意义.
Queue 接口定义了一些作用于列表第一个元素的方法,它们的行为方式不同。这些方法是:
peek()
element()
poll()
remove()
Run Code Online (Sandbox Code Playgroud)
peek() 这个方法检索队列第一个元素的值,而不将它从队列中移除。对于方法的每次调用,我们总是得到相同的值,并且它的执行不会影响队列的大小。如果队列为空, peek() 方法返回 null。
element() 此方法的行为类似于 peek(),因此它再次检索第一个元素的值而不删除它。但是,如果列表为空, element()会抛出 NoSuchElementException。
poll() 这个方法通过从队列中移除来检索队列第一个元素的值。. 在每次调用时,它删除列表的第一个元素,如果列表已经为空,则返回 null 但不抛出任何异常。
remove() 此方法的行为与 poll() 方法相同,因此它删除列表的第一个元素,如果列表为空,则抛出 NoSuchElementException
| 归档时间: |
|
| 查看次数: |
34678 次 |
| 最近记录: |