2012-10-20 97 views
0

大家好我正在做功课,我不明白它的一部分。我已经实现了它,但它没有按预期工作。它说:了解通过arraylist迭代

迭代通过比萨对象调用toString()每个对象的 方法,添加方法调用的返回值加上 一个换行符叫列表中字符串的ArrayList的。

这里是我做了什么

for(int i=0; i<myList.size()l i++) 
{ 
//myList is arraylist of type Pizza 
    list +=myList.toString() + "\n"; 
} 

如果任何人都可以说,我的执行是否正确,这将是巨大的。

回答

4

您需要拨打ArrayList#get()方法which will return the element at the specified position in this list

list +=myList.get(i).toString() + "\n"; 
4

您需要遍历使用for(:)语法列表元素,而不是for(; ;)语法:

for (Pizza item : myList) { 
    list += item.toString() + "\n"; 
} 

在情况下,当你想通过列表的所有元素,你做不需要索引变量。在Java 5中添加的每个语法的都可以让您更轻松地浏览列表。

+0

有时,您需要使用索引变量,例如,在索引“+ i +”:“+ list.get(i)'处打印item”。顺便说一句,'for(:)'语法在Java中被称为'enhanced-for loop'。 –

3

这是不正确的。 ArrayList是一个拥有自己方法的对象。

无法通过myList中[指数] ...你要调用其get()方法来访问它的成员......

列表+ = myList.get(我);

这是假设列表是一个字符串,你只是将myList的每个项目连接起来(这听起来像你可能不想做的事情,但我不能说你的实际目标是什么) 。

as dasblinkenlight指出另一个(可能更优雅)的方法是跳过for(;;)循环,并使用for(:)循环遍历列表,并将每个项目都抓到它的自己的变量。这种方法的缺点是,如果出于某种原因,您确实需要知道数组列表中的项目索引是什么,那么您没有那种方便的信息。

+0

是列表是字符串,我正在从文件中读取数据,并将其存储在字符串obj列表中 –