什么是一个好的列表结构,当我想循环通过它再返回时等等?我现在使用扩展的ArrayList
和一个自定义方法来向前和向后循环它等。
Java(Android)是否提供了我可以使用的列表类型而不扩展它的行为?
如果没有,那么为这个用例编写列表的最佳方法是什么?
我目前的代码看起来有点像这样:
if(!back){
if(hasNext()){
return next();
} else {
back = true;
return previous();
}
} else {
if(hasPrevious()){
return previous();
} else {
back = false;
return next();
}
}
答案 0 :(得分:2)
使用LinkedList进行前进和后退导航。这个最适合这个。
答案 1 :(得分:1)
LinkedList
正是您正在寻找的。它是默认的iterator
是一个前向迭代器,但它也提供了descendingIterator
答案 2 :(得分:0)
使用Guava,您可以执行
for (E forwardElement : list) {
...
}
for (E backwardElement : Lists.reverse(list)) {
// Lists.reverse returns a view, so it's free
...
}
或者如果你想在一个循环中完成它们,
for (E element : Iterables.concat(list, Lists.reverse(list))) {
...
}
(在内部,这只是包裹你的ListIterator
并反转它的方向,但是这样使用它真的很简单。)
答案 3 :(得分:0)
您可以使用任何类型的List。您可以编写一个实现ForwardAndBackIterator
的专用Iterator
并封装您想要的行为。在下面添加。
public class ForwardAndBackIterator<T> implements Iterator<T> {
private List<T> list;
public ForwardAndBackIterator<T>(List<T> list) {
this.list = list;
}
public boolean hasNext() {
}
public T next() {
}
public void remove(T value) {
}
}