continueæãå®è¡ãããã¨ãããã¯å
ã§ãã以éã«è¨è¿°ãããå¦çãå
¨ã¦è¡ããã«æ¬¡ã®ç¹°ãè¿ãã®æ¡ä»¶å¤æã«é²ã¿ã¾ãã ã¤ã¾ãä¸è¨ã®å ´åã¯å¤æ°ãiãã®å¤ã3ã®æã ããSystem.out.println(i);ããå®è¡ããã¾ã ⦠Java-å復å¦çä¸ã«ãªã¹ãããè¦ç´ ã追å ãã (4) ç§ã¯ ... åé¿ãã!= nullæ ; Javaã§InputStreamãStringã«å¤æããæ¹æ³ ããã¯æ¡å¼µforæã¨ããã¾ãã å
ã«ã¼ã . ãã¤ãã¦ã«ã¼ãå¦çãè¡ãæ¹æ³ã¯ã©ã®ããã«ããã¹ãããèãã¦ã¿ã¾ããã ãµã³ãã«ã¨ãã¦ä½ã£ãã½ã¼ã¹ã¯ãã¡ãã«ããã¾ã㠦辺ã«ä»£å
¥ã§ããè¦ç´ ãæã£ã¦ã ãªãããã ⦠LinkedListのi番目の要素を見つけるために、実装はi番目までのすべての要素を通過します。, Listインタフェースは、リスト要素への位置付け(インデックス付き)アクセスのための4つのメソッドを提供します。 リスト(Java配列など)はゼロベースです。 これらの操作は、一部の実装(たとえばLinkedListクラス)のインデックス値に比例して時間的に実行されることに注意してください。 したがって、呼び出し元が実装を認識していない場合は、リスト内の要素を反復処理すると、索引付けする方が一般的に適しています。, item3にアクセスするには、直接ジャンプすることができないので、item3に達するまで、すべてのノードを通過する必要があることがはっきりと分かります。, これはひどく非効率です。なぜなら、インデックスを作成するたびにリストの先頭から再起動し、すべての項目を処理するからです。 つまり、リストをトラバースするだけで、あなたの複雑さは効果的にO(N^2)なります!, さて、 ArrayListであるListの他の実装に行くと、単純な配列に裏付けられています。 その場合、配列は連続しているので任意の位置へのランダムジャンプが可能であるため、上記の両方のトラバーサルは同等です。, 受け入れられた答えは間違いないが、私は軽微な欠陥を指摘するかもしれない。 引用チューダー:, さて、ArrayListであるListの他の実装に行くと、単純な配列に裏付けられています。 その場合 、配列は連続しているので任意の位置へのランダムジャンプが可能であるため、上記の両方のトラバーサルは同等です。, 手書きループは、索引付き反復を参照することに注意してください。 私はループ用に拡張されたイテレータが原因であると考えています。 連続した配列に裏打ちされた構造体では、ペナルティでマイナーなパフォーマンスが得られます。 また、Vectorクラスでこれが当てはまると思われます。, 私のルールは、可能な限り拡張forループを使用し、パフォーマンスについて本当に気にしているのであれば、ArrayListsまたはVectorに対してのみインデックス付き反復を使用します。 ほとんどの場合、これを無視することもできます。コンパイラはこれをバックグラウンドで最適化するかもしれません。, Androidの開発のコンテキストでは、ArrayListsの両方のトラバーサルが必ずしも同等であるとは限りません 。 思考のためだけの食糧。, これらの操作は、一部の実装(たとえば、LinkedListクラス)のインデックス値に比例して時間内に実行される可能性があることに注意してください。, リンクリストには固有のインデックスはありません。 .get(x)を呼び出すとリスト実装が最初のエントリを見つけ、配列バックアップされたリストがbackingarray[x]配列にインデックスをbackingarray[x]ことができる.next() x-1回(O(n)または線形時間アクセス) O(1)または一定時間内のbackingarray[x] 。, すべての操作は、二重リンクされたリストに期待されるように実行されます。 リストにインデックスを付けるオペレーションは、指定されたインデックスに近いほうから、リストの先頭または末尾を走査します。, Listインタフェースのサイズ変更可能な配列の実装。 オプションのリスト操作をすべて実装し、nullを含むすべての要素を許可します。 Listインタフェースの実装に加えて、このクラスは、リストを格納するために内部的に使用される配列のサイズを操作するメソッドを提供します。 (このクラスはVectorとほぼ同じですが、非同期です)。, size 、 isEmpty 、 get 、 set 、 iterator 、およびlistIteratorオペレーションは一定の時間内に実行されます。 加算演算は償却された一定時間で実行されます。つまり、n個の要素を追加するにはO(n)時間が必要です。 他のすべての操作は、線形時間(大まかに言えば)で実行されます。 Constant FactorはLinkedList実装の場合と比較して低くLinkedListます。, 「Java Collections FrameworkのためのBig-Oサマリー」という関連の質問には、このリソース「Java Collections JDK6」を参考にして回答が得られます。, 「Java Collections FrameworkのためのBig-Oサマリー」という関連の質問に. ã§ã³ã®ãã¹ã¦ã®è¦ç´ ã«å¯¾ãã¦é çªã«å¦çãè¡ãããã«ä½¿ãã¾ããæ¡å¼µforæã¯é常ã®foræã¨éã£ã¦æ¡ä»¶å¼ã¨å¤åå¼ãç¡ããããç°¡æ½ã«ã³ã¼ããè¨è¿°ã§ãã¾ãã æ¡å¼µforæã®ä½¿ãæ¹ã次ã®ããã°ã©ã ã§ç¢ºèªãã¦ã¿ã¾ãããã ã§ã³ã¨å¼ã°ããè¤æ°ã®è¦ç´ ãæã£ã¦ãããã®ããå
¨ã¦ã®è¦ç´ ã«å«ã¾ããå¤ãé ã«åãåºãã¦å¦çããããã«ä½¿ããã¾ãã . ã§ã³å
ã®å
¨ã¦ã®è¦ç´ ã対象ã«ç¹°ãè¿ãå¦çãè¡ããã¨ãã§ãã¾ããé常ã®foræã¨ã®éãã¨æ¸ãæ¹ã«ã¤ãã¦å¦ç¿ãã¾ãããã foræã¨æ¡å¼µforæã¯Javaããã°ã©ã ãçµãéã«å¿
é ã®ãããã¨ã³ã¸ãã¢ãããã°ã©ãã¼ãç®æãæ¹ã¯æ©ã段éã§æ£ããè¦ãããç¥èã§ãã ããã«ã¡ã¯ï¼ã¨ã³ã¸ãã¢ã®ä¸æ²¢ã§ãã Javaã«ã¯ã«ã¼ãå¦çãè¡ãforæãããã¾ãããä»ã«ãæ¡å¼µforæ(for-eachæ)ããJava8ã§è¿½å ãããforEachã¡ã½ããã使ã£ã¦ã«ã¼ãå¦çãè¡ããã¨ãã§ãã¾ãã ãã®è¨äºã§ã¯ã æ¡å¼µforæã¨ã¯ Java8ã§è¿½å ãããforEachã¡ã½ããã¨ã¯ Javaã§Map/Listã触ã£ã¦ãã¨ã Listã®è¦ç´ ãã¹ã¦ã«å¯¾ãã¦ãªãããããï¼ Mapã®è¦ç´ ãã¹ã¦ã«å¯¾ãã¦å復çã«å¦çãããï¼ ã£ã¦ããç¬éãå°ãªãããããã¨æãã¾ãã ã¤ãã¬ã¼ã¿å
ã®ç¾å¨ã®ãªãã¸ã§ã¯ããã©ã®ããã«åç
§ããã®ã§ãã? ã³ãã«ãªä¾ã¨ãã¦List strsã¨ãã夿°ãããã¨ãã¦ããã®ã¤ã³ããã¯ã¹ã¨æååã表示ãããã¨ããå ´åã ArrayListã¯ã©ã¹ã¯Iterableã¤ã³ã¿ã¼ãã§ã¼ã¹ãå®è£
ãã¦ããã®ã§ããããã®ã¤ã³ã¿ã¼ãã§ã¼ã¹ãå®è£
ããã¯ã©ã¹ã¯æ¡å¼µforæã§ä½¿ç¨ã§ãã¾ãã å®éã«æ¡å¼µforæã§è¦ç´ ãæ¹è¡åºåãã§è¡¨ç¤ºãã¦ã¿ã¾ãããã for (int val : tmp){ System.out.println(val); } 使ç¨ãã夿°ã¯tmp(int[])ã¨val(int)ã§ãã int[]åã¯ã[æ°å]ãæ¸ããªãã¨ãªãã¸ã§ã¯ãã表ãã¾ããã¤ã¾ããé
åã®å
¨è¦ç´ ãæ¸¡ãããããã§ãã ã ç´æã®ããã¼ã©ã³ã; 使¥PCé¸ã³ Lenovo Legion Y530; Java æ¡å¼µforæã§Mapãã«ã¼ãããæ¹æ³; Java trim å
¨è§ã¹ãã¼ã¹ã¯ç¯å²å¤ ADTãªã¹ãã®Javaããã¥ã¡ã³ããèªãã¨ã次ã®ããã«ãªãã¾ãã Listã¤ã³ã¿ãã§ã¼ã¹ã¯ããªã¹ãè¦ç´ ã¸ã®ä½ç½®ä»ãï¼ã¤ã³ããã¯ã¹ä»ãï¼ã¢ã¯ã»ã¹ã®ããã®4ã¤ã®ã¡ã½ãããæä¾ãã¾ãã ãªã¹ãï¼Javaé
åãªã©ï¼ã¯ã¼ããã¼ã¹ã§ãã ã§ã³ã«å¯¾ãã¦ãã«ã¦ã³ã¿å¤æ°ã«ããã¢ã¯ã»ã¹ã§ã¯ãªããé
å ⦠¨éãã¦ãã ããã ãªã¹ã2ã®ããã°ã©ã ãä¿åãã¦ããå®è¡ããã¨ãçå¹´ææ¥ã®ä¸è¦§ãç»é¢ã¸åºåããã¦ãä¸è¨ã®ããã«ãªãã¾ãããªã¹ã1ã¨ã¾ã£ããåãåºåãããããã¨ãåããã¯ãã§ãã æ¡å¼µforæã®ææ³ã以ä¸ã«ç¤ºãã¾ãã for(å 夿°å : å¼){ æ } å¼ã®é¨åã«ã¯ã以ä¸ã®ãããããè¿ãå¼ãè¨è¿°ãã¾ãã é
å; 次ã®ç¯ã§èª¬æãããjava.lang.Iterableãã¤ã³ã¿ãã§ã¼ã¹ãå®è£
ããã¯ã©ã¹ã®ã¤ã³ã¹ã¿ã³ã¹ java.util.Setãjava.util.Listã®ã¤ã³ã¹ã¿ã³ã¹ãªã© ã«ä½ãããã¨ã³ã¸ãã¢, 質åè
以å¤ã®ã¦ã¼ã¶ã«ãå½¹ç«ã¤, 1æ¥5åã¾ã§è©ä¾¡ãä¸ãããã¾ã, 1æ¥ã«1ã¦ã¼ã¶ã«å¯¾ãã¦2åã¾ã§è©ä¾¡ãä¸ãããã¾ã, ããã°ã©ãã³ã°ã«é¢ä¿ã®ãªã質å, ãã£ã¦ã»ãããã¨ã ããè¨è¼ãã丸æãã®è³ªå, åé¡ã»èª²é¡ãå«ã¾ãã¦ããªã質å, æå³çã«å
å®¹ãæ¹æ¶ããã質å, éå»ã«æç¨¿ãã質åã¨åãå
容ã®è³ªå, åºåã¨åãåããããããªæç¨¿, 質åã®åçã«ãªã£ã¦ããªãæç¨¿, ã¹ãã ãæ»æçãªè¡¨ç¾ãç¨ããæç¨¿. åé¤ - java æ¡å¼µforæ æ¬¡ã®è¦ç´ . é
åã®ä¸èº«ãä¸ã¤ããã«åãåºãããã¨ãã int[] num = {1,2,3,4,5,6,7,8,9}; æ¡å¼µforæã¯ã continue; ã§ãç¾å¨ã®ã«ã¼ãï¼ç¹°ãè¿ãï¼ã®æ®ãã®å¦çãã¹ãããããæ¬¡ã®ã«ã¼ãï¼ç¹°ãè¿ãï¼ã®å¦çã¸ç§»ããã¨ãã§ããã. Javaã®ç¹°ãè¿ãæã«J2SE 5.0ï¼java 2 SEã®ãã¼ã¸ã§ã³ 5.0ï¼ããæ¡å¼µforæãå ãã£ããããã¾ã§ã®åºæ¬çãªforæã®æ¸ãæ¹ãããã®æ¡å¼µã«ããç¹å®ã®å ´é¢ã§ããã³ã³ãã¯ãã«æ¸ããã¨ãã§ããããã«ãªã£ãã æ¸ãæ¹ã®åºæ¬ã¯ããã ã nextã¡ã½ããâ¦æ¬¡ã®è¦ç´ ... ãåç
§ãã¦ãã ãããJava SE 7(Java 1.7)ã®èª¬ææ¸(API)ãæ²ç¤ºãã¦ããã¾ãâIteratorã¤ã³ã¿ã¼ãã§ã¤ã¹ã æ¡å¼µ foræã¨ã¯. foræã¯ãJavaã§ç¹°ãè¿ãå¦çãè¡ãããã®æ§æã§ããforæã¯ãwhileæã¨ä¸¦ã³ãJavaã®ç¹°ãè¿ãæ§æã®ä»£è¡¨æ ¼ã§ãããã®è¨äºã§ã¯ãforæã«ã¤ãã¦åå¿è
åãã«åºæ¬ãããä¼ããã¾ãããã便å©ã§ç°¡åã«æ±ããæ¡å¼µforæã«ã触ãã¾ãã®ã§ããã²è¦ãã¦ãã£ã¦ãã ãã! ã¸ã§ããªã¯ã¹è¡¨ç¾ããæ¡å¼µforæã¸; ã¾ã¨ã; ãããã«; åãã«. å¤éå±¤ã®æ¡å¼µforæã«ãããè¤æ°ã®é層ã®å¦çãcontinueæã§ã¹ããããæ¬¡ã®å¦çã¸ç§»ã; å¤éå±¤ã®æ¡å¼µforæã«ãããç¾å¨ã®å¦çãcontinueæã§ã¹ããããæ¬¡ã®å¦çã¸ç§»ã; å¤éå±¤ã®æ¡å¼µforæã®è¤æ°ã®é層ã®ã«ã¼ãå¦çãbreakæã§çµäºããã ã«ã¼ãï¼ç¹°ãè¿ãï¼å¦çãçµäºãããã«ã¯ãbreakã使ãã ãµã³ãã« èããã°ãããããã©ãèããã®ãé¢åãªã®ã§ã 奿°ã»å¶æ°ã§ä¸èº«ãåãåºã. ä»åã¯foræã使ã£ã¦é
åã®è¦ç´ å
¨ã¦ãåºåããããã°ã©ã ãæ¸ãã¦ã¿ã¾ãããæããããforæã®æ¸ãæ¹ã¨ãæ¡å¼µforæã¨ããæ¸ãæ¹ã使ã£ã¦ã¿ã¾ãããæ¡å¼µforæã¯Javaã®ãã¼ã¸ã§ã³5ãããã§å°å
¥ãããè¨æ³ã ã¨æãã¾ãã ã§ã³ã¨ããããã®ç¹°ãè¿ããæ½è±¡åãããªãã¸ã§ã¯ãããã¤ãã¬ã¼ã¿(iterator)ãã¨å¼ã³ã¾ãã ã¤ãã¬ã¼ã¿ã®å½¹å²ã¤ãã¬ã¼ã¿ã«å¿
è¦ãªæä½ãå®ç¾©ããIterator(java.util.Iterator)ã¤ã³ã¿ã¼ãã§ã¹ã«ã¯æ¬¡ã®3ã¤ã®ã¡ã½ãããããã¾ãã æ¡å¼µforæã®ä½¿ãæ¹. ãã ããæ¡å¼µforæã¯ãå
é è¦ç´ ãã1ã¤ãã¤å¤ãåãåºãå¦çããã§ããªãç¹ã«æ°ãä»ããå¿
è¦ãããã¾ãã ãããã«. Javaã§ã®ã«ã¼ãã®åºæ¬ã¯foræã¨whileæã§ããããã«ãJavaã®foræã«ã¯æ¡å¼µforæã¨ãããã®ãåå¨ãã¾ãã ä¸è¬çã«Javaã§ã®foreachæã¨è¨ãã¨ããã®æ¡å¼µforæãæãã®ãæ®éã¨æããã¾ãã®ã§ãæ¡å¼µforæã»foræ/whileæã®é çªã§foreachããæã®ãµã³ãã«ãç´¹ä»ãã¾ãã ¨. ã§ã³ã¨ã¯å¤ãã¾ã¨ãã¦ä¿æããããã«ç¨ãããé
åã¨ä¼¼ããããªæ§è³ªãæã£ããã®ã§ãããBr