获取ArrayList索引

时间:2013-06-08 20:18:54

标签: java arraylist

我正在尝试访问数组列表的当前索引,但无法弄清楚如何在以下方法中执行此操作:

public String getNextMessage(){
    String s = getMessageArray(index);
    index++;
    return s;
}

“getMessageArray”出现错误,我不知道如何解决它。这个方法适用于Arrays [],但我不知道如何使用ArrayList。这是整个类文件:

package com.game.main;

import java.util.ArrayList;

public class Message {

private int index;
private ArrayList<String> messageArray;

private String intro = "Welcome.";

public Message() {
    messageArray = new ArrayList<String>();
    messageArray.add(intro);
}

public String getNextMessage(){
    String s = getMessageArray(index);
    index++;
    return s;
}

public ArrayList<String> getMessageArray() {
    return messageArray;
}

public void setMessageArray(ArrayList<String> messageArray) {
    this.messageArray = messageArray;
}
}

3 个答案:

答案 0 :(得分:1)

我猜你getNextMessage()的第一行应该是:

String s = getMessageArray().get(index);

您班上没有getMessageArray(int)这样的方法。它是带有0-arg的方法,返回ArrayList,您可以使用List#get(int)方法访问某个索引处的值。

实际上,您可以直接在该方法中访问messageArray,因为它只在同一个类中。因此,该行可以更好地编写为:

String s = messageArray.get(index);

现在,假设您在获取该索引处的值和返回该值之间没有做任何事情,除了递增索引之外,您可以将方法缩短为一行:

public String getNextMessage(){
    return messageArray.get(index++);
}

答案 1 :(得分:1)

正如我在之前的回答中写的那样

public String getNextMessage(){
    String s = messages.get(indx);
    indx++;
    return s;
}

但是,您似乎更改了从

访问列表的部分
String s = messages.get(indx);

String s = getMessageArray(index);

您的版本无法工作的原因是,您正在尝试调用名为getMessageArray(index)的方法,该方法返回ArrayList对象本身,即ArrayList。你真正想要做的是调用ArrayList类的get() - 方法。

您已在班级

中声明了一个名为消息的变量
private ArrayList<String> messages;

您可以在此处看到消息的类型为 ArrayList 。 ArrayList有一个名为 get(int index)的方法,它检索指定索引处的元素。

您可以按照我在本答案开头所写的方式调用此方法。

作为参考,您可以查看arraylist here上的所有可用方法。

答案 2 :(得分:0)

而不是

getMessageArray(index); 

getMessageArray.get(index);  

首先必须获取数组列表,然后指定要获取的索引。