2013-01-23 13 views
15

このメソッドを使用してArrayをそのメソッドに渡すか、数値がarrayにあるかどうかをチェックするたびに書き出すほうが良いかどうか疑問に思っていました。例えばarray - javaを繰り返して処理する

:事前に助けを

public static boolean inArray(int[] array, int check) { 
    for (int i = 0; i < array.length; i++){ 
     if (array[i] == check) 
      return true; 
      } 
    return false; 
} 

ありがとう!

答えて

7

あなたは間違いなく、メソッドにこのロジックをカプセル化する必要があります。

同一のコードを複数回繰り返すことに利点はありません。

また、ロジックをメソッドに配置して変更する場合、コードを変更する必要があるのは1か所だけです。

サードパーティのライブラリを使用するかどうかは、全く異なる決定です。

6

アレイを使用している場合、「含む」の検索はO(N)です。最悪の場合はアレイ全体を反復処理する必要があるためです。配列がソートされている場合は、検索時間をlog(N)に減らすバイナリ検索をソートのオーバーヘッドとともに使用できます。これが繰り返し呼び出される何かをされた場合

、機能に置き:

private boolean inArray(int[] array, int value) 
{ 
    for (int i = 0; i < array.length; i++) 
    { 
     if (array[i] == value) 
     { 
      return true; 
     } 
    } 
    return false; 
} 
+2

元の投稿の機能とはどのように違いますか?また、個人的な要求として、中括弧は言語を学ぶ人々のための素晴らしいことです。 – JustinKSU

+0

@JustinKSU +1は、if文とforループの_always_に中括弧を使用することを推奨します。もちろん、上記コードはOPコードと同じです。 – jahroy

+1

@JustinKSUちょうどOPのポストをコピー/ペーストしました(そのため、中括弧はありません)。必要な変更がなかったのと同じ機能を追加し、OPの2つの部分の質問に答えました。 – Woot4Moo

5

あなたはlibにorg.apache.commons.lang.ArrayUtils

をインポートすることができ、静的メソッドところがありますint配列と値を渡してチェックすることができます。

contains(int [] array、int valueToFind) 値が指定された配列にあるかどうかを確認します。

ArrayUtils.contains(intArray, valueToFind); 

ArrayUtils API

32

atleast Java 1.5.0(Java 5)以来、コードを少しきれいにすることができます。 Array sおよびIteratorを実装して何も(例えばCollection sが)のようなループすることができます。Java 8で

public static boolean inArray(int[] array, int check) { 
    for (int o : array){ 
     if (o == check) { 
     return true; 
     } 
    } 
    return false; 
} 

あなたも何か行うことができます。このため、ストリームに変換しますが

public static boolean inArray(int[] array, int check) { 
    return Arrays.asList(array).anyMatch(x -> x == check); 
} 

ですおそらく過剰殺戮。

関連する問題