Java对arraylist使用迭代器如何获取索引

Java对arraylist使用迭代器如何获取索引,java,arraylist,iterator,Java,Arraylist,Iterator,如果我使用迭代器,我如何得到满足条件的索引iterator.next()在后面给我一个,这样我就可以减去一,但我想这是正确的方法吗 public static int getSomething() int tempposition = 1; Iterator<Item> iterator = data.iterator(); while (iterator.hasNext()) {

如果我使用迭代器,我如何得到满足条件的索引
iterator.next()
在后面给我一个,这样我就可以减去一,但我想这是正确的方法吗

public static int getSomething()
    int tempposition = 1;
            Iterator<Item> iterator = data.iterator();
            while (iterator.hasNext())
            {
                if (iterator.next().getTitle().equals("Something"))
                {
                    tempposition = iterator.next().getPosition();
                }


            }

return tempposition - 1;
public static int getSomething()
int tempposition=1;
迭代器迭代器=data.Iterator();
while(iterator.hasNext())
{
if(iterator.next().getTitle().equals(“某物”))
{
tempposition=iterator.next().getPosition();
}
}
返回位置-1;
我发现的是适合我情况的正确代码

public static int getSomething()
    {
        int tempposition = 1;

        Iterator<Item> iterator = data.iterator();

        while (iterator.hasNext())
        {
          Item item = iterator.next();

              if (item.getTitle().equals("Something"))
            {
                tempposition = item.getPosition();
            }

        }


        Log.d(TAG, "tempposition is " + tempposition );
        return tempposition ;


    }
public static int getSomething()
{
int tempposition=1;
迭代器迭代器=data.Iterator();
while(iterator.hasNext())
{
Item=iterator.next();
if(item.getTitle().equals(“某物”))
{
tempposition=item.getPosition();
}
}
Log.d(标签“temposition is”+temposition);
返回位置;
}
来自

int-nextIndex()
返回下一个元素的索引。如果没有下一个元素,则返回列表的大小。 int
previousIndex()
返回上一个元素的索引。如果没有上一个元素,则返回
-1


由于在循环中调用了两次
next
,因此可能会得到
tempposition
的意外值。它应该看起来像这样:

Item item = iterator.next(); // call next only once here
if (item.getTitle().equals("Something")) {
    tempposition = item.getPosition();
}

你必须跟踪自己

public static int getSomething()
    int tempposition = 1;
    int index = 0;
            Iterator<Item> iterator = data.iterator();
            while (iterator.hasNext())
            {
                if (iterator.next().getTitle().equals("Something"))
                {
                    tempposition = iterator.next().getPosition();
                }
                index++;


            }

return tempposition - 1;
public static int getSomething()
int tempposition=1;
int指数=0;
迭代器迭代器=data.Iterator();
while(iterator.hasNext())
{
if(iterator.next().getTitle().equals(“某物”))
{
tempposition=iterator.next().getPosition();
}
索引++;
}
返回位置-1;

如果您想要索引,那么为什么不使用传统的
for
循环?@MAXGEN迭代器应该足够通用,可以跨多个容器使用,其中一些容器不一定具有有用的“索引”语义(例如集合等)。所以,如果你想要索引,你会想要一个较低级别的抽象(普通的ol'
for
循环,等等)。当然可以做到这一点,迭代器有没有办法,或者我是否遗漏了一些我不理解的东西?“本质上,他们不是同一件事吗?”圣诞老人好吧,我想这就是答案。但是,由于next()命令给了我一个我需要的过程,所以我拿走一个是对的吗?@MAXGEN正如@assylias指出的,额外的索引可能是因为您调用了
.next()
两次。某个对象与“迭代器迭代器”相同吗?这就是我遇到的问题,你的方法。我的自定义arraylist不是一般字符串。迭代器解析为什么?迭代器迭代器=null;这就是eclipse调试所建议的?但是这个方法失败了,我发现了。谢谢你的帮助。张贴完成代码以上。感谢链接帮助!对索引调用有一定的限制。