Я думаю о получении следующего и предыдущего элемента из списка, однако я не могу справиться с этим правильно - проблема возникает в пределах списка. Может быть, у кого-то есть лучшая концепция для решения этой проблемы?Вращающийся список влево и вправо
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));
}
}
Вы знакомы с [ 'Collections.rotate (List, Int)'] (https: // документы .oracle.com/JavaSE/7/документы/API/Java/Util/Collections.html # поворота (java.util.List,% 20int))? –
Collections.rotate изменяет всю коллекцию, это не очень эффективно. Но это небольшая программа, поэтому я уверен, что она полетит ... –
Спасибо Луи за ваш ответ! Однако эта функция меняет состав List, но я создал свой список как final - извините за не упомянутый об этом. Я предпочел бы получить следующий или предыдущий элемент из списка. –