Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java在列表中循环并返回,等等。。。使用什么列表类型?_Java_Android_List_Loops - Fatal编程技术网

Java在列表中循环并返回,等等。。。使用什么列表类型?

Java在列表中循环并返回,等等。。。使用什么列表类型?,java,android,list,loops,Java,Android,List,Loops,当我想在列表中来回循环时,最好使用什么样的列表结构?我现在使用一个扩展的ArrayList和一个自定义方法来前后循环等等 Java(Android)是否提供了一种列表类型,我可以在不扩展其行为的情况下使用它 如果不是,那么为这个用例编写列表的最佳方式是什么 我当前的代码看起来有点像这样: if(!back){ if(hasNext()){ return next(); } else { back = true; return pre

当我想在列表中来回循环时,最好使用什么样的列表结构?我现在使用一个扩展的
ArrayList
和一个自定义方法来前后循环等等

Java(Android)是否提供了一种列表类型,我可以在不扩展其行为的情况下使用它

如果不是,那么为这个用例编写列表的最佳方式是什么

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

if(!back){
    if(hasNext()){
        return next();
    } else {
        back = true;
        return previous();
    }
} else {
    if(hasPrevious()){
        return previous();
    } else {
        back = false;
        return next();
    }
}
有了它,你就可以

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))) {
  ...
}
(在内部,这只是包装您的
列表迭代器并反转它的方向,但像这样使用它真的很简单。)

使用

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
并反转它的方向,但是像这样使用它非常简单。)

使用LinkedList进行向前和向后导航。这一个最适用于此。

使用LinkedList进行向前和向后导航。这一个最适用于此。

您可以使用任何类型的列表。您可以编写一个专门的
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) {
    }
}
public类ForwardAndBackIterator实现迭代器{
私人名单;
公共前向和后向迭代器(列表){
this.list=列表;
}
公共布尔hasNext(){
}
公共交通工具{
}
公共无效删除(T值){
}
}

您可以使用任何类型的列表。您可以编写一个专门的
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) {
    }
}
public类ForwardAndBackIterator实现迭代器{
私人名单;
公共前向和后向迭代器(列表){
this.list=列表;
}
公共布尔hasNext(){
}
公共交通工具{
}
公共无效删除(T值){
}
}

A正是您想要的。它的默认值是一个正向迭代器,但它也提供了一个。它的默认值是向前迭代器,但它也提供了android中的LinkedList不提供hasNext和其他方法,你是说我应该使用listIterator吗?List List=new LinkedList();迭代器迭代器=list.iterator();虽然android中的(iterator.hasNext()){System.out.println(iterator.next());}LinkedList不提供hasNext和其他方法,但您是在告诉我应该使用listIterator吗?List List=new LinkedList();迭代器迭代器=list.iterator();while(iterator.hasNext()){System.out.println(iterator.next());}您的实现有什么不好?您的实现有什么不好?可能会很有用,但在我的android项目中包含这个库会有点过头。从这个库中提取我需要的东西可能会变得非常复杂。但仍然是有用的答案。一点也不复杂,例如。Guava提供了一个快速指南,可能会很有用,但在我的android项目中包含这个库可能会有点过头。从这个库中提取我需要的东西可能会变得非常复杂。但仍然是有用的答案。一点也不复杂,例如。番石榴提供了一个快速指南