題目描述
Java的迭代器類別可以幫助您走訪一個集合中的所有元素。
底下有一個例子:
import java.util.*;
public class Example
{
public static void main(String []argh)
{
ArrayList mylist = new ArrayList();
mylist.add("Hello");
mylist.add("Java");
mylist.add("4");
Iterator it=mylist.iterator();
while(it.hasNext())
{
Object element = it.next();
System.out.println((String)element);
}
}
}
在這個題目中,您必須要完成func方法。func方法接受一個ArrayList型態的變數傳入,ArrayList物件儲存一個或是多個整數數值,在整數數值之後緊接著一個別的字串「###」,接下來的元素為一個或是多個字串。舉例來說,ArrayList物件儲存的元素可能會像以下這個樣子:
element[0] => 42
element[1] => 10
element[2] => "###"
element[3] => "Hello"
element[4] => "Java"
element[1] => 10
element[2] => "###"
element[3] => "Hello"
element[4] => "Java"
您必須讓func方法只會輸出在「###」元素之後的所有字串元素。如上面這個例子,會輸出:
Hello
Java
Java
原題網址
解題概念
iterator物件的hasNext方法可以判斷是否還有下一個元素,而iterator的next方法則可以取得下一個元素。通常會寫出類似以下的程式來用iterator物件走訪所有元素:
while(iterator.hasNext())
Object element = iterator.next();
}
參考答案
import java.util.*;
public class Main
{
static Iterator func(ArrayList mylist)
{
Iterator it=mylist.iterator();
while(it.hasNext())
{
Object element = it.next();
if(element instanceof String)
break;
}
return it;
}
public static void main(String []argh)
{
ArrayList mylist = new ArrayList();
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
for(int i=0;i<n;i++)
{
mylist.add(sc.nextInt());
}
mylist.add("###");
for(int i=0;i<m;i++)
{
mylist.add(sc.next());
}
Iterator it=func(mylist);
while(it.hasNext())
{
Object element = it.next();
System.out.println((String)element);
}
}
}