开发者

Java - "Rotating" Objects in A LinkedList - Is LinkedList.addLast(LinkedList.removeFirst()) Good Or Bad Programming?

开发者 https://www.devze.com 2023-01-08 13:22 出处:网络
In my Java application both of the following will compile and run, and produce the desired result. //\"Rotate\" the list items one place to the left.

In my Java application both of the following will compile and run, and produce the desired result.

//"Rotate" the list items one place to the left.
myLinkedList.addLast(myLinkedList.removeFirst());

And a "rotation" in the opposite direction

//"Rotate" the list items on开发者_StackOverflow社区e place to the right.
myLinkedList.addFirst(myLinkedList.removeLast());

Both "rotations" only require one line of code each, but I'm wondering if this is the right way to go about it? Are there any pitfalls in this approach?

Is there a better, more robust, less error-prone way of doing the same as I have above which would require more than one line of code to achieve, and if so please explain why.


Seems fine to me. If you had a truly circular buffer which was full you could just move the "start/end" index, but I think the linked list approach will work pretty well. In particular it's still O(1).


I suggest using Collections.rotate.


I would implement it exactly as you have.

myLinkedList.addLast(myLinkedList.removeFirst());

The only way I can see this being "bad programming" is if the list is shared between threads and your method rotates an element from one end to the other without holding a lock (I am not aware of any concurrent Queue implementation that can rotate atomically.)

0

精彩评论

暂无评论...
验证码 换一张
取 消