JavaA2Z

KAB-studio > プログラミング > JavaA2Z > 多重ループとは

多重ループ

日本語 多重輪
英語 multi loop
ふりがな たじゅうるーぷ
フリガナ タジュウループ

解説

ループの中にループが入っているループ
forwhiledo-whileによるループの中に、ループを入れる事ができる。ループの中にループを入れることで、2重3重のループを作ることができる。これが「多重ループ」である。
多次元配列を扱う場合等に使用する。
 
安易な多重ループはネストが深くなり、コードが長くなる傾向にあるため、可読性が落ちる。ループそれぞれをメソッドで分けた方がいいだろう。
このようにメソッドループを分けた場合には「多重ループ」と呼ばないことが多い。つまり「多重ループ」というのは単に「プログラムの見た目の話」を指す場合が多いということである。
 
見た目的に多重ループであろうと、メソッドに分けてあろうと、多重ループは処理が指数的に増えるため、処理速度に非常に大きな影響を与える可能性がある。
多重ループしている箇所がある場合、必ずパフォーマンスを調べ、ボトルネックとなっていないことを確認した方が良いだろう。

参考サイト

  • (参考サイトはありません)

(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        forint iF1 = 0; iF1 < 3; ++iF1 )
        {
            // ループ1重目、ここから。

            int i = 0;
            while( i < 3 )
            {
                // ループ2重目、ここから。

                ++i;

                // ループメソッドを呼びます。
                loop();
                // この中でループをしています。
                // ということは、「この箇所」では3重ループしていることになります。
                // ただの言葉遊びという感じですが。

                // ただし、このように3重ループしている箇所を見つけたら、
                // パフォーマンスのチェックはするようにしましょう。
                // 3乗というのは決して馬鹿にできませんし、
                // 特にWebアプリケーションは「秒単位の処理が求められる」ことを
                // 忘れてはいけません。

                // ループ2重目、ここまで。
            }

            // ループ1重目、ここまで。
        }

        // このように、基本的にループの種類に関係なく、
        // ループの多重度は決まります。
        // 単純に「ネストの深さ」=「ループの深さ」と考えましょう。
    }

    /**
    *   ループするメソッド。
    */
    private static void loop()
    {
        forint iF1 = 0; iF1 < 3; ++iF1 )
        {
            // ループ3重目……にはなりません。
            // だって、このメソッドを上記の箇所から呼び出しているとは
            // 限らないし。
        }
    }
}
// Sample.java
public class Sample
{
    public static void main( String[] args )
    {
        for( int iF1 = 0; iF1 < 3; ++iF1 )
        {
            // ループ1重目、ここから。

            int i = 0;
            while( i < 3 )
            {
                // ループ2重目、ここから。

                ++i;

                // ループメソッドを呼びます。
                loop();
                // この中でループをしています。
                // ということは、「この箇所」では3重ループしていることになります。
                // ただの言葉遊びという感じですが。

                // ただし、このように3重ループしている箇所を見つけたら、
                // パフォーマンスのチェックはするようにしましょう。
                // 3乗というのは決して馬鹿にできませんし、
                // 特にWebアプリケーションは「秒単位の処理が求められる」ことを
                // 忘れてはいけません。

                // ループ2重目、ここまで。
            }

            // ループ1重目、ここまで。
        }

        // このように、基本的にループの種類に関係なく、
        // ループの多重度は決まります。
        // 単純に「ネストの深さ」=「ループの深さ」と考えましょう。
    }

    /**
    *   ループするメソッド。
    */
    private static void loop()
    {
        for( int iF1 = 0; iF1 < 3; ++iF1 )
        {
            // ループ3重目……にはなりません。
            // だって、このメソッドを上記の箇所から呼び出しているとは
            // 限らないし。
        }
    }
}

この単語を含むページ

「みだし」に含まれているページ

「解説」に含まれているページ

「サンプルプログラムとか」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/07/27
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。