たとえば、上記のコードで、for ループの 2 番目のレベルに入らない場合は、リストに対して追加操作を実行します。最初の for ループ本体で操作しているのは 2 番目の for ループの size() であるため、ここでは問題ありません。 for(){...} で for in の size() を直接操作したことを思い出します... これは無理そうです 最初は何か方法があったような気がしますが思いつきません誰かマスターが思い出を思い出すのを手伝ってくれませんか? ?
無限ループにならないように注意してくださいfor(:){},用 for(int i = 0; i < list.size(); i++)は使用しないでください
for(:){}
for(int i = 0; i < list.size(); i++)
for each、つまりコード内の for(a : as) ループでは、ループされたコレクションを追加または削除することはできません。そうしないと、ConcurrentModificationException が報告されます。 このコードには問題はありません。リストを変更するすべての操作は内部ループの外側で行われるためです。
ニーズに応じて、実際には各都市のデータを州ごとにカウントします。 Java 8 を使用する条件がある場合は、Stream の GroupBy メソッドを見てみましょう。コードを大幅に簡素化できます。
関係のない問題の場合、リストを設定する set メソッドは適切ではありません。
ビジネス ロジックを含むオブジェクトの場合、内部構造はパッケージ化され、ビジネス ドメインの概念に基づいたインターフェイスを提供する必要があり、内部コレクションは直接公開されるべきではありません。
データ転送オブジェクトであっても、コレクション属性のsetメソッドを提供すべきではありません。一般に、プライベート コレクション変数のライフ サイクルは、その親オブジェクトによって管理される必要があります。外部の世界は、外側のパッケージング オブジェクトの add または delete メソッドを通じてプライベート コレクションを操作します。必要に応じて、コレクションの取得メソッドを提供します。コピーするか不変にするかを検討する必要があります。
foreachではリストの操作(追加、削除等)はできません
2 レベルのループから直接抜け出したい場合は、2 つの方法しかありません:
break label の構文を使用します (これまでに使用したことがありません。Google で調べてください)。
break label
これを書くのは長い道のりです。私の言葉は次のように書きます:
元のコードには最適化が必要な領域がいくつかあります:
二重ループを避けるようにしてください。通常は内側のループを抽出する必要があります。
同じ変数に対する操作の場合、より自然に読めるように、コード行をできるだけグループ化する必要があります。
何を聞いているのか分かりません。入れないからですか?
質問する前に考えを整理してください。何を聞きたいですか?どのような答えが得られることを期待していますか?そうしないと、他の人があなたの代わりに答えることができなくなります。
無限ループにならないように注意してください
for(:){}
,用for(int i = 0; i < list.size(); i++)
は使用しないでくださいfor each、つまりコード内の for(a : as) ループでは、ループされたコレクションを追加または削除することはできません。そうしないと、ConcurrentModificationException が報告されます。
このコードには問題はありません。リストを変更するすべての操作は内部ループの外側で行われるためです。
ニーズに応じて、実際には各都市のデータを州ごとにカウントします。 Java 8 を使用する条件がある場合は、Stream の GroupBy メソッドを見てみましょう。コードを大幅に簡素化できます。
関係のない問題の場合、リストを設定する set メソッドは適切ではありません。
ビジネス ロジックを含むオブジェクトの場合、内部構造はパッケージ化され、ビジネス ドメインの概念に基づいたインターフェイスを提供する必要があり、内部コレクションは直接公開されるべきではありません。
データ転送オブジェクトであっても、コレクション属性のsetメソッドを提供すべきではありません。一般に、プライベート コレクション変数のライフ サイクルは、その親オブジェクトによって管理される必要があります。外部の世界は、外側のパッケージング オブジェクトの add または delete メソッドを通じてプライベート コレクションを操作します。必要に応じて、コレクションの取得メソッドを提供します。コピーするか不変にするかを検討する必要があります。
foreachではリストの操作(追加、削除等)はできません
2 レベルのループから直接抜け出したい場合は、2 つの方法しかありません:
break label
の構文を使用します (これまでに使用したことがありません。Google で調べてください)。これを書くのは長い道のりです。私の言葉は次のように書きます:
リーリー元のコードには最適化が必要な領域がいくつかあります:
二重ループを避けるようにしてください。通常は内側のループを抽出する必要があります。
同じ変数に対する操作の場合、より自然に読めるように、コード行をできるだけグループ化する必要があります。
何を聞いているのか分かりません。入れないからですか?
質問する前に考えを整理してください。何を聞きたいですか?どのような答えが得られることを期待していますか?そうしないと、他の人があなたの代わりに答えることができなくなります。