Java循环遍历列表并再次返回等等......要使用哪种列表类型?

时间:2012-03-17 14:55:44

标签: java android list loops

什么是一个好的列表结构,当我想循环通过它再返回时等等?我现在使用扩展的ArrayList和一个自定义方法来向前和向后循环它等。

Java(Android)是否提供了我可以使用的列表类型而不扩展它的行为?

如果没有,那么为这个用例编写列表的最佳方法是什么?

我目前的代码看起来有点像这样:

if(!back){
    if(hasNext()){
        return next();
    } else {
        back = true;
        return previous();
    }
} else {
    if(hasPrevious()){
        return previous();
    } else {
        back = false;
        return next();
    }
}

4 个答案:

答案 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) {
    }
}