我目前正在尝试学习如何实现自己的ListIterators.除了我对previous()方法感到困惑之外,我已经实现了大部分并准备好了.按照标准惯例,我可以解释一下通常如何解释previous().
即:
>cursor<
dog cat fish bird frog snake
Run Code Online (Sandbox Code Playgroud)
根据Oracles Java Platform 7 API:
E previous()
返回列表中的上一个元素并向后移动光标位置.可以重复调用此方法以向后遍历列表,或者与调用next()混合以来回传递.(请注意,对next和previous的交替调用将重复返回相同的元素.)
我不太明白的是,如果调用previous(),它会返回'fish'或'cat'.
我从两个方面理解它:
1)'鱼'是你以前的目标
2)'cat'是数字上指数'鱼'指数之前的对象
如果之前返回'fish',那么remove()实际上是否删除相同的元素而不管遍历的方向?
将光标视为两个元素之间是最容易的.所以在开始时,它就在之前 dog.调用next()返回dog,并将其移至之间dog和cat,等您已经完成迭代当光标之后 snake.
因此next()总是返回光标后的值,然后将光标移动到之后的位置.previous()始终返回光标前的值,并将光标移动到之前的位置.
编辑:正如大卫·康拉德在评论中指出:remove()始终删除,是由要么返回的最后的值next()或者previous().这可能是最不明显的部分,当谈到我上面解释它的方式时......使用你所描述的那种"on item"光标来模拟这种行为要容易得多.
| 归档时间: |
|
| 查看次数: |
841 次 |
| 最近记录: |