访问arraylist中对象的元素

时间:2013-09-30 05:40:40

标签: java object elements

我正在处理包含多个变量的ArrayList个对象。例如:

// pseudo code
class Ticket {    
    int gameID
    double price
    int seatnumber
}

我有ArrayList个多个Ticket个对象,需要访问它们。我看过javadoc,到目前为止我已经提出了

list.get(index).attribute

但是我收到编译错误说:

  

无法找到符号

我在做错了语法吗? 这是我的代码:

public static void printGameMoney(ArrayList games, ArrayList tickets)
{
    double total = 0;
    double tickMoney = 0;

    for (int i=0; i<tickets.size(); i++)
    {           
        double tickMoney = tickets.get(i).priceOfTick;
        total = total + tickMoney;          
    }
}

6 个答案:

答案 0 :(得分:3)

你的代码是“old-school”,你应该使用typed-types,interfaces和new-style for循环:

public static void printGameMoney(final List<Game> games, final List<Ticket> tickets)
{
    double total = 0;

    for (final Ticket ticket : tickets)
    {           
        final double tickMoney = ticket.getPriceOfTick();
        total = total + tickMoney;          
    }
}

另请注意,此方法很奇怪,因为它不会返回任何内容。

答案 1 :(得分:2)

如果属性确实是您的班级成员之一,那么请使用如下。

((Ticket) list.get(index)).attribute;

答案 2 :(得分:1)

请改用:

public static void printGameMoney(ArrayList games, ArrayList<Ticket> tickets)
{
    double total = 0;
    double tickMoney = 0;

    for (int i=0; i<tickets.size(); i++)
    {           
        double tickMoney = tickets.get(i).priceOfTick;
        total = total + tickMoney;          
    }
}

基本上,更改会导致ArrayList<Ticket>而非简单ArrayList。通过这种方式,您可以告诉编译器ArrayList中的对象属于Ticket类型,因此它们具有您指定的属性(例如priceOfTick)。

同样适用于games,因此,如果您有Game课程,则应使用ArrayList<Game> games

答案 3 :(得分:1)

首先在每个字段声明后添加分号:

class Ticket {    
    int gameID;
    double price;
    int seatnumber;
}

另外,请显示您使用的确切代码,而不是list.get(index).attribute

答案 4 :(得分:1)

List<Object> list = new ArrayList<Object>();
((Ticket)list.get(x)).attribute;

答案 5 :(得分:0)

您必须这样访问,list.get(i).price;而不是list.price.get(i);

for (int i=0; i<tickets.size(); i++)
{

    double tickMoney =  list.get(i).price;
    total = total + tickMoney;  

}

问题在于你减速ArrayList

如果你声明像ArrayList<Ticket>那样你在获得时不需要施放。{p>其他明智的你需要在那里演员。更多用于每个循环。