我可以在Java中使用listiterator访问随机位置的元素吗? - java

我正在编写遍历文章记录(在数据库中)的代码。我将数据库加载到内存中,并将其存储在ListIterator中。

有谁知道我是否可以随机访问元素?

我创建了这个Java示例:

package com.myjava.listiterator;

import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;

public class MyListIterator {
    public static void main(String a[]){
        List<Integer> li = new ArrayList<Integer>();
        ListIterator<Integer> litr = null;
        li.add(23);
        li.add(98);
        li.add(29);
        li.add(71);
        li.add(5);
        litr=li.listIterator();
        System.out.println("Elements in forward directiton");
        while(litr.hasNext()){
            System.out.println(litr.next());
        }
        System.out.println("Elements in backward directiton");
        while(litr.hasPrevious()){
            System.out.println(litr.previous());
        }

        // How to access litr[3]?
    }
}

此代码在数字前后循环。看到我的最后评论。我可以访问litr[3]吗?

java大神给出的解决方案

//如何访问litr [3]?

不,您不能从迭代器中随机获得。

来自ListIterator docs

ListIterator没有当前元素。它的光标位置始终位于通过调用previous()返回的元素和通过调用next()返回的元素之间。

// How to access litr[3]?

我可以在这里通过直接从列表中获取可能性li.get(3);

如果您手边没有列表,而只有迭代器,请先准备一个列表

List<ObjectType> dupList= new ArrayList<ObjectType>();
while (itr.hasNext())
    dupList.add(itr.next());

如果只需要获得一个对象,则可以选择:

ObjectType target =null;
int i = 0;
while(itr.hasNext() && i!=3){
    i++;
    target = itr.next();
}
//access fourth element via target variable.

现在将随机索引传递到此列表(dupList)

java:继承 - java

有哪些替代继承的方法? java大神给出的解决方案 有效的Java:偏重于继承而不是继承。 (这实际上也来自“四人帮”)。他提出的理由是,如果扩展类未明确设计为继承,则继承会引起很多不正常的副作用。例如,对super.someMethod()的任何调用都可以引导您通过未知代码的意外路径。取而代之的是,持有对本来应该扩展的类的引用,然后委托给它。这是与Eric…

如何修改休眠的SQL查询? - java

我有点好奇,有没有办法修改hibernate的核心,以便我可以自定义生成的SQL query。例如,在生成的查询中添加功能以使用connect by prior(oracle)或我要自定义的任何其他子句。 java大神给出的解决方案 起初,这样的问题总是在我心中敲响警钟。你被警告了...AFAIK,hibernate使用所谓的dialects进行特定的优化。…

Java中的方法是否有“新”修饰符? - java

Java中是否有与C#'s new修饰符等效的符号?我想将其用于单元测试-每个init()方法都应标记为final,并使用@Before进行注释。然后,jUnit执行所有这些init()方法。我不想为每个init()方法都想出新的名字,我绝对想将它们标记为最终名称,以确保它们不会彼此覆盖(另一种模式是覆盖并调用super。每个init()方法的in…

无法在Eclipse中调试条件中的最后一条语句? - java

public static void main(String args[]) { if(true) { int x= 3*44+7; //int y=1; } } 我将问题缩小为这个简单的语句,我真的不知道如何在Eclipse调试器中访问此变量。它总是在以下情况下发生:在if条件中声明变量,try-catch语句,循环等,并且偶然地是该块中的最后一个语句。为…

用Java构建大批量数据处理工具 - java

Closed. This question needs to be more focused。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。 3年前关闭。 Improve this question 我正在尝试使用Java构建ETL工具。 ETL工具用于对大量数据(关系型和其他类型)进行批量读取,…