Javaのforループを使用する場合、ループ本体の長さを長くすると良くないのでしょうか?
某草草
某草草 2017-06-28 09:23:52
0
7
886
リーリー

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

某草草
某草草

全員に返信(7)
过去多啦不再A梦

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

いいねを押す +0
大家讲道理

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

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

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

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

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

いいねを押す +0
曾经蜡笔没有小新

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

いいねを押す +0
伊谢尔伦

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

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

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

いいねを押す +0
世界只因有你

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

リーリー

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

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

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

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

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

いいねを押す +0
滿天的星座

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート