検索

ホームページ  >  に質問  >  本文

Javaのforループを使用する場合、ループ本体の長さを長くすると良くないのでしょうか?

リーリー

たとえば、上記のコードで、for ループの 2 番目のレベルに入らない場合は、リストに対して追加操作を実行します。最初の for ループ本体で操作しているのは 2 番目の for ループの size() であるため、ここでは問題ありません。 for(){...} で for in の size() を直接操作したことを思い出します... これは無理そうです 最初は何か方法があったような気がしますが思いつきません誰かマスターが思い出を思い出すのを手伝ってくれませんか? ?

某草草某草草2763日前909

全員に返信(7)返信します

  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-28 09:25:52

    無限ループにならないように注意してくださいfor(:){},用 for(int i = 0; i < list.size(); i++)は使用しないでください

    返事
    0
  • 大家讲道理

    大家讲道理2017-06-28 09:25:52

    for each、つまりコード内の for(a : as) ループでは、ループされたコレクションを追加または削除することはできません。そうしないと、ConcurrentModificationException が報告されます。
    このコードには問題はありません。リストを変更するすべての操作は内部ループの外側で行われるためです。

    ニーズに応じて、実際には各都市のデータを州ごとにカウントします。 Java 8 を使用する条件がある場合は、Stream の GroupBy メソッドを見てみましょう。コードを大幅に簡素化できます。

    関係のない問題の場合、リストを設定する set メソッドは適切ではありません。

    • ビジネス ロジックを含むオブジェクトの場合、内部構造はパッケージ化され、ビジネス ドメインの概念に基づいたインターフェイスを提供する必要があり、内部コレクションは直接公開されるべきではありません。

    • データ転送オブジェクトであっても、コレクション属性のsetメソッドを提供すべきではありません。一般に、プライベート コレクション変数のライフ サイクルは、その親オブジェクトによって管理される必要があります。外部の世界は、外側のパッケージング オブジェクトの add または delete メソッドを通じてプライベート コレクションを操作します。必要に応じて、コレクションの取得メソッドを提供します。コピーするか不変にするかを検討する必要があります。

    返事
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-06-28 09:25:52

    foreachではリストの操作(追加、削除等)はできません

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-28 09:25:52

    2 レベルのループから直接抜け出したい場合は、2 つの方法しかありません:

    1. break label の構文を使用します (これまでに使用したことがありません。Google で調べてください)。

    2. それがあなたが使用する方法です、フラグを設定します。
    3. また、

    返事
    0
  • 世界只因有你

    世界只因有你2017-06-28 09:25:52

    これを書くのは長い道のりです。私の言葉は次のように書きます:

    リーリー

    元のコードには最適化が必要な領域がいくつかあります:

    1. 二重ループを避けるようにしてください。通常は内側のループを抽出する必要があります。

    2. 同じ変数に対する操作の場合、より自然に読めるように、コード行をできるだけグループ化する必要があります。

    3. 変数の名前は、そのビジネス上の意味と主要なタイプを反映する必要があります。たとえば、List オブジェクトには可能な限り xxxList という名前を付ける必要があります。私はあなたのためにこれを変えるのが面倒です。
    4. 返事
      0
  • 为情所困

    为情所困2017-06-28 09:25:52

    何を聞いているのか分かりません。入れないからですか?

    返事
    0
  • 滿天的星座

    滿天的星座2017-06-28 09:25:52

    質問する前に考えを整理してください。何を聞きたいですか?どのような答えが得られることを期待していますか?そうしないと、他の人があなたの代わりに答えることができなくなります。

    返事
    0
  • キャンセル返事