java左右旋转列表
我正在考虑从列表中获取下一个和上一个元素,但我无法正确处理此问题-问题发生在列表的限制上。也许有人有更好的概念来解决这个问题
public class Test {
private char heading = 'N';
List<Character> cardinal = Arrays.asList('N', 'E', 'S', 'W' );
ListIterator<Character> iterator = cardinal.listIterator();
public static void main(String[] args) {
Test test = new Test();
System.out.println("heading = " + test.heading);
test.rotateLeft(); System.out.println("Rotating left...");
System.out.println("heading = " + test.heading);
test.rotateLeft(); System.out.println("Rotating left...");
System.out.println("heading = " + test.heading);
}
public void rotateRight() {
this.heading =
(iterator.hasNext() ? iterator.next() : cardinal.get(0));
}
public void rotateLeft() {
this.heading =
(iterator.hasPrevious() ? iterator.previous() : cardinal.get(3));
}
}
# 1 楼答案
问题是,当到达列表末尾时,没有重置迭代器。从那时起,
iterator.hasNext()
将始终返回false。一个简单的解决方法:如果您的列表为
final
,则更容易: