2017-08-08 9 views
-1

Iteratorとforループを使ってLinkedリストを出力できます。メモリ割り当てに関する限り、どのように違いますか?どちらが効果的ですか? (それは各linkedList.get(i)は、リストの上に部分的に反復処理を必要と一度だけリンクされたリストを、反復処理するので)Iteratorリンクされたリストをメモリまで印刷する有効なメソッド

public class Demo { 
    public static void main(String[] args) { 
     LinkedList<String> placesToVisit = new LinkedList<String>(); 
     placesToVisit.add("Sydney"); 
     placesToVisit.add("Melbourne"); 
     placesToVisit.add("Brisbane"); 
     placesToVisit.add("Perth"); 

     printListWithoutFor(placesToVisit); 
     printListWithFor(placesToVisit); 

    } 

    private static void printListWithoutFor(LinkedList<String> linkedList) { 
     Iterator<String> i = linkedList.iterator(); 
     while (i.hasNext()) { 
      System.out.println("Now visiting " + i.next()); 
     } 
     System.out.println("========================="); 
    } 

    private static void printListWithFor(LinkedList<String> linkedList){ 
     for (int i=0; i<linkedList.size(); i++){ 
      System.out.println("Now visiting " + linkedList.get(i)); 
     } 
    } 
} 
+0

イテレータはループより優れています。詳細については、[こちら](https://stackoverflow.com/questions/22267919/iterator-vs-for) –

+0

パーフェクトをご覧ください。ありがとうございました。 – jParmar

+0

イテレータはループより優れています。詳細については、[こちら](https://stackoverflow.com/questions/22267919/iterator-vs-for) –

答えて

1

印刷は、それがの配分のために少しより多くのメモリを(必要であっても、より多くの時間が効率的ですIterator)。私はIterator以上のforループを選択するのではなく、その1つのインスタンス割り当てを保存するだけです。

空間の複雑さの点では、どちらの方法も、スペースがO(1)である必要があります。

したがって、時間の複雑さがより良い方法を選択することをお勧めします。Iteratorの印刷では、O(n)の時間がかかり、forループの時間はO(n^2)になります。

0

メモリに関する懸念だけでなく、インデックス作成の問題を避けるために、ループよりもイテレータを見つけることができます。より多くの情報を見つけてくださいhere

関連する問題