2017-02-06 4 views
2

コードは、私がプログラミングするとき、私は常に0から始まると私は++区間を使用して、この正確なコードを何度も使用Javaでforループを書く方が簡単ですか?

for(int i = 0; i < max; i++) { 
    //do something 
} 

です。実際に変更する変数は1つだけです(最大)

これはそれほど短くはありませんでしたが、このコードがどれだけ使用されているかを考慮すると、非常に役立ちます。

私はPythonには、はるかに速く入力する範囲関数があることを知っています。

+2

状況に応じて、各ループまたは[Java 8ストリーム](https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html)にaを使用できます。 。 –

+0

eclipse IDEを使用している場合は、forループのショートカットがあります。そうすれば、あなたはいくつかの文字を入力するだけで済みます。 – Alp

+5

あなた自身の簡略関数 'doInRange(int max、intConsumer whatToDo)'を書くこともできます。 –

答えて

0

は、Java 8を使用する場合は、あなたがIntStream.range(min, max).foreach(i ->{})

+2

OPは具体的に短い方法を求めました。私のカウントでは、 'IntStream.range(min、max)。foreach(() - > 'for(int i = 0; i yshavit

+0

非常に面白い...ラムダをJavaで使いやすくて読みやすい方法です。短い方が良いというわけではありません。 – Piotrowy

+1

私は個人的にこれをより読みやすいとは考えていません。 :)しかし、それは意見の領域に入る。私は25年以上前に 'for 'ループを読んできたので、特に" 0; yshavit

1

コレクションをループするときに、あなたが強化されたループを使用することができますを使用することができますが:

int[] numbers = 
{1,2,3,4,5,6,7,8,9,10}; 

for (int item : numbers) { 
    System.out.println(item); 
} 
+0

真ですが、1000回の繰り返しが必要な場合はどうすればよいですか?誰もアレイの1000要素を書き留めるつもりはありません。反復回数もコンパイル時にも固定されています。 ---私たちにプリプロセッサがあれば!ちょうど冗談ですが、私たちはそれをC++に入れ替えることもできます。 – byxor

+0

さて、これを例として使用しました。エンハンストループは任意のコレクションで使用できます。主なポイントはfor(int i = 0; i Abdulgood89

0

多くの場合、最大値は不明である(ファイル、データベースなどからのデータ)。 私にとっては、List(ArrayListなど)にすべてをロードし、各ループに対して を使用するのが最善です。私の意見では、ループの構文を短くするには、コレクションをループすることが最善の方法です。

+0

すべてのデータがメモリに収まる場合は問題ありませんが、ファイルから読み込んで何かをリストにロードするものに変換するには、必ずしも前もって必ずしもそうである必要はありませんでした。 –

+0

はい、データを部分的に読み込み、for-eachループで使用することができます。 –

+0

ヒープのような意味ですか? – Ellisan

1

少数の人々は、これらが本当に優れているかどうかは議論の余地や好みの問題ですが、あなたができるいくつかのことですここでは、このような何かを求めているので:

void times(int n, Runnable r) { 
    for (int i = 0; i < n; i++) { 
     r.run(); 
    } 
} 

は使用方法:

times(10,() -> System.out.println("Hello, world!")); 

または:

void times(int n, IntConsumer consumer) { 
    for (int i = 0; i < n; i++) { 
     consumer.accept(i); 
    } 
} 

用途:

times(10, x -> System.out.println(x+1)); 

または:

void range(int lo, int hi, IntConsumer consumer) { 
    for (int i = lo; i < hi; i++) { 
     consumer.accept(i); 
    } 
} 

使用法:

range(1, 11, x -> System.out.println(x)); 

これらは単にいくつかのアイデアです。慎重に設計され、共通の図書館に置かれ、一貫して使用されると、共通の慣用的なコードを簡潔かつ読みやすくすることができます。不注意に使用されると、そうでなければ簡単なコードを管理不能な混乱に変える可能性があります。私は、2人の開発者がラインを描くべき場所に正確に同意するとは思っていません。

関連する問題