題目描述

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"

您必須讓func方法只會輸出在「###」元素之後的所有字串元素。如上面這個例子,會輸出:

Hello
Java

原題網址

https://www.hackerrank.com/challenges/java-iterator

解題概念

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);
      }
      
   }
}