2016-08-11 9 views
0
import java.util.ArrayList; 
import java.util.Calendar; 
import java.util.Date; 
import java.util.Iterator; 
import java.util.LinkedList; 
import java.util.List; 

    public class Sample { 

     Calendar cal = Calendar.getInstance(); 


     void getData(ArrayList<InvoiceBillingProjects> projectDataList){ 
      //System.out.println("start"); 
      long start = System.nanoTime(); 
      Iterator<InvoiceBillingProjects> itr = projectDataList.iterator(); 

      while(itr.hasNext()){ 
      // InvoiceBillingProjects ibpp = itr.next(); 
       itr.next().getDescription(); 
      } 
      /*for(int i=0;i<projectDataList.size();i++){ 
       projectDataList.get(i).getDescription(); 
      }*/ 
      long end = System.nanoTime(); 
      System.out.println(" time "+(end-start)); 
     } 


     public static void main(String arg[]) { 

      ArrayList<InvoiceBillingProjects> projectDataList = new ArrayList<InvoiceBillingProjects>(); 
      List<InvAssociateDetails> lt = new LinkedList<InvAssociateDetails>(); 
      for(int i=0;i<120000;i++){ 
       lt.add(new InvAssociateDetails()); 
       //new InvoiceBillingProjects().setAssociateList(lt); 

      } 
      for(int i=0;i<120000;i++){ 
       InvoiceBillingProjects ibp = new InvoiceBillingProjects(); 
       projectDataList.add(ibp); 
       ibp.setAssociateList(lt); 
      } 

      new Sample().getData(projectDataList); 
     } 
    } 

forループよりもイテレータを使用すると、リスト全体の検索が高速になります。上記のプログラムでは、繰り返しの開始から終了までの時間が長くなります。イテレータの使用に時間がかかるのはなぜですか?Iteratorとforループを使用してリスト全体を検索します。時間の複雑さ

答えて

0

時間の違いは何ですか? 2つはほぼ同じでなければなりません。 ArrayList内の要素を検索することは、一定時間(O(1))であることに注意してください。どちらの方法も同じルックアップを使用します。

+0

ありがとうArthuruhtrA、LinkedListとArray ListとしてList of Implementationを使用すると、私が期待していた時間の結果から得ました。私の悪い:) –

関連する問題