1980

私はString[]そのような値で:

public static final String[] VALUES = new String[] {"AB","BC","CD","AE"};

与えられたString sかどうかをテストする良い方法はありますか?VALUES含むs


  • これを回避する方法はありますが、forループを使用できます。" for(String s:VALUES)if(s.equals(" MYVALUE"))trueを返します。 - Zack
  • なぜ人々はまだこの答えを支持しているのですか(今75)?その2歳と非常に単純な答え。私がしたのは、誰かがAPIメソッドを指すことだけでした。答えがあまりにも膨大であり、この数の投票に値するとは思わない。 - camickr
  • @ camickr。あなたの質問に対して、私はこの質問とあなたの答えを支持しました。 3年前に読んでいませんでした。 (ところで、ありがとう:) - Pursuit
  • @ camickr - これとほぼ同じ状況です。stackoverflow.com/a/223929/12943投票を続けていますが、それでもsunのドキュメントをコピーして貼り付けるだけでした。私は、スコアはあなたがどれだけの努力を払ったかではなく、あなたがそれをどの程度の速さで投稿したかに基づいていると思います。たぶん私たちはJohn Skeetの秘密に出会ったのかもしれません!いい答えだ、+1。 - Bill K
  • @ camickrというのは、私と同じように、質問をグーグルし、結果をクリックし、あなたの答えを見て、それをテストし、うまくいって、答えを支持してから去るからです。 - Aequitas

25 답변


2560

Arrays.asList(yourArray).contains(yourValue)

警告:これはプリミティブの配列に対しては機能しません(コメントを参照)。


からこれでStreamsを使うことができます。

String[] values = {"AB","BC","CD","AE"};
boolean contains = Arrays.stream(values).anyMatch("s"::equals);

の配列かどうかを確認するintdoubleまたはlong値の使用が含まれていますIntStreamDoubleStreamまたはLongStreamそれぞれ。

int[] a = {1,2,3,4};
boolean contains = IntStream.of(a).anyMatch(x -> x == 4);


  • Arraysクラスの検索関数と配列の反復処理、およびequals()関数またはプリミティブの==の使用との比較では、この処理のパフォーマンスに多少興味があります。 - Thomas Owens
  • asList()は、その中心に配列を持つArrayListを返すので、多くのことを失うことはありません。コンストラクタは参照を変更するだけなので、そこで行うべき作業はそれほど多くありません。そしてcontains()/ indexOf()はequals()を繰り返し使用します。プリミティブの場合は、自分でコーディングしたほうがよいでしょう。文字列や他のクラスでは、違いは目立ちません。 - Joey
  • NetBeansは奇妙なことに、' Arrays.asList(祝日)と主張しています。 ' int []の祝日の場合' < int< int>< int>>ではなく、< 39>リスト< int []>'を返します。それはただ一つの要素を含みます。 Containsには1つの要素しかないため、Containsは機能しません。 int配列 - Nyerguds
  • Nyerguds:確かに、これはプリミティブには使えません。 Javaでは、プリミティブ型は一般的にはできません。 asListが< T>として宣言されています。リスト< T> asList(T ...) int []を渡すと、コンパイラはT = int []を推論します。なぜなら、T = intを推論することはできないからです。プリミティブを総称にすることはできないからです。 - CromTheDestroyer
  • @ジョーイだけのメモ、それはArrayList、 だがしかしjava.util.ArrayListご想像のとおり、返される実際のクラスは次のとおりです。java.util.Arrays.ArrayList<E>以下のように定義されます。public class java.util.Arrays {private static class ArrayList<E> ... {}}。 - TWiStErRob

322

まず始めにコードをクリアします。我々は(修正)を持っています:

public static final String[] VALUES = new String[] {"AB","BC","CD","AE"};

これは、FindBugsが教えてくれるであろう可変の静的です。それはプライベートでなければなりません:

private static final String[] VALUES = new String[] {"AB","BC","CD","AE"};

(注:あなたは実際にドロップすることができますnew String[];ビット。)

そのため、参照配列は良くありません。特にここでは集合が欲しいのです。

private static final Set<String> VALUES = new HashSet<String>(Arrays.asList(
     new String[] {"AB","BC","CD","AE"}
));

(私自身のような妄想的な人々は、これが包まれていればもっと安らぎを感じるかもしれません。Collections.unmodifiableSet - それは公にされることさえ可能である。

「文字列が与えられた場合、VALUESにsが含まれているかどうかをテストする良い方法はありますか?」

VALUES.contains(s)

O(1)


  • 最初の場所にコレクションを作成するには、O(N)を除いて:) - Drew Noakes
  • 静的な場合は、おそらく何度か使用されることになります。そのため、セットを初期化するために費やされる時間は、多くの線形検索のコストと比較してかなり小さい可能性があります。 - Xr.
  • それから、コレクションを作成することはコードロード時間(技術的にはO(n)ですが、実質的に一定である)によって支配されるでしょう。 - Tom Hawtin - tackline
  • @ TomHawtin-tacklineなぜあなたは「特にここでは集合が欲しい」と言うのですか?この場合、Set(HashSet)の利点は何ですか?なぜ「参照配列」なのですか。 (「参照配列」とは、への呼び出しによって生成された配列を基盤とするArrayListを意味しますか。Arrays.asList)? - Basil Bourque
  • @nmr ATreeSetだろうO(log n)HashSetsは、バケット内の要素の平均数がほぼ一定になるように調整されます。少なくとも2 ^ 30までの配列に対して。 big-O分析で無視されるハードウェアキャッシュなどから影響が出る可能性があります。ハッシュ関数が効果的に機能していると仮定します。 - Tom Hawtin - tackline

179

あなたが使用することができますArrayUtils.containsからApache Commons Lang

public static boolean contains(Object[] array, Object objectToFind)

このメソッドはfalse渡された配列がnull

すべての種類のプリミティブ配列に利用可能なメソッドもあります。

例:

String[] fieldsToInclude = { "id", "name", "location" };

if ( ArrayUtils.contains( fieldsToInclude, "id" ) ) {
    // Do some stuff.
}


  • 78kbのAndroidアプリケーション用の300kbのライブラリ、必ずしも良いとは限らない - max4ever
  • @ max4ever私は同意しますが、これは「あなた自身のローリング」よりはまだ優れています。そして生のJavaの方法を読んだ方が簡単です。 - Jason
  • パッケージ:org.apache.commons.lang.ArrayUtils - slamborne
  • @ max4ever(他の理由で)時々、あなたはこのライブラリを既に持っています、そしてそれは完全に有効な答えです。私はこれを探していました、そして私はすでにApache Commons Langに頼っています。この回答をありがとう。 - GuiSim
  • @ max4everほとんどのAndroidアプリはProguardによって最小化され、必要なクラスと機能だけがアプリに追加されます。それはあなた自身のものを転がすこと、またはapacheのもののコピーをコピーすることと同じです。また、最小化を使用していない人でも、約700kbや78kb :)と文句を言う必要はありません。 - Kenyakorn Ketsombut

146

単純に手作業で実装することを提案した人がいないのは驚きです。

public static <T> boolean contains(final T[] array, final T v) {
    for (final T e : array)
        if (e == v || v != null && v.equals(e))
            return true;

    return false;
}

改善:

v != nullconditionはメソッド内では定数であり、メソッド呼び出し中は常に同じブール値に評価されます。そう入力ならarrayが大きい場合、この条件を一度だけ評価するほうが効率的です。for結果に基づいてループします。改良されたcontains()方法:

public static <T> boolean contains2(final T[] array, final T v) {
    if (v == null) {
        for (final T e : array)
            if (e == null)
                return true;
    } else {
        for (final T e : array)
            if (e == v || v.equals(e))
                return true;
    }

    return false;
}


  • @Phoexoこの解決法は明らかに速いです。なぜなら、受け入れられた答えは配列をリストにラップし、そのリストのcontains()メソッドを呼び出すのに対し、私の解決策は基本的にcontains()だけがするものです。 - icza
  • @AlastorMoody e == vは非常に高速な参照等価検査を行います。同じオブジェクト(参照によって同じ)が配列内にある場合、それは早く見つけられます。同じインスタンスではない場合でも、equals()メソッドで要求されたものと同じである可能性があります。参照が同じでない場合は、これがチェックされます。 - icza
  • この機能がJavaの一部ではないのはなぜですか。 Javaが肥大化していると人々が言うのも不思議ではありません。最近の子供たち! - phreakhead
  • @phreakheadこれはJavaの一部です。Collection.contains(Object) - Steve Kuo
  • @iczaの源を見ればArraysそしてArrayListこれは、使用しているバージョンよりも必ずしも速くはないことがわかりました。Arrays.asList(...).contains(...)。作成のオーバーヘッドArrayList非常に小さいです、そしてArrayList.contains()上に示したもの(JDK 7)よりもスマートなループを使用します(実際には2つの異なるループを使用します)。 - Axel

65

配列がソートされていない場合は、すべてを反復処理し、それぞれに対してequalsを呼び出す必要があります。

配列がソートされている場合は、バイナリ検索を実行できます。配列クラス。

一般的に言って、もしあなたがたくさんのメンバーシップチェックをするつもりなら、あなたは配列ではなくセットにすべてを保存したいかもしれません。


  • また、私の答えで述べたように、Arraysクラスを使用する場合は、配列をソートしてから、新しくソートされた配列に対してバイナリ検索を実行できます。 - Thomas Owens
  • @トーマス:私は同意します。あるいは、すべてをTreeSetに追加することもできます。同じ複雑さ。変更しない場合は配列を使用します(文字列はないが参照は連続して配置されているため、メモリの局所性を少し節約することができます)。これが時間の経過とともに変わるならば、私はセットを使うでしょう。 - Uri

62

配列に値が含まれているかどうかを調べる4つの方法

1)リストを使う

public static boolean useList(String[] arr, String targetValue) {
    return Arrays.asList(arr).contains(targetValue);
}

2)セットを使う:

public static boolean useSet(String[] arr, String targetValue) {
    Set<String> set = new HashSet<String>(Arrays.asList(arr));
    return set.contains(targetValue);
}

3)単純なループを使う

public static boolean useLoop(String[] arr, String targetValue) {
    for (String s: arr) {
        if (s.equals(targetValue))
            return true;
    }
    return false;
}

4)Arrays.binarySearch()を使う:

以下のコードは間違っています、完全を期すためにここにリストされています。 binarySearch()はソートされた配列でのみ使用できます。あなたは結果が下に変であることがわかります。これは配列がソートされているときの最善の選択肢です。

public static boolean binarySearch(String[] arr, String targetValue) {  
            int a = Arrays.binarySearch(arr, targetValue);
            return a > 0;
        }

簡単な例:

String testValue="test";
String newValueNotInList="newValue";
String[] valueArray = { "this", "is", "java" , "test" };
Arrays.asList(valueArray).contains(testValue); // returns true
Arrays.asList(valueArray).contains(newValueNotInList); // returns false


  • バイナリ検索の例では>が返されます。 0; - Will Sherwood
  • どうして? >を返すべきだと思います。 -1は、0が配列の先頭に含まれていることを示すためです。 - mbelow
  • 最初の変種(a >= 0)正しかった、ただチェックするドキュメント「これは、キーが見つかった場合に限り、戻り値が> = 0になることを保証することに注意してください。」 - Yoory N.

46

その価値のために、私はスピードに関する3つの提案を比較するテストを実行しました。ランダムな整数を生成し、それらを文字列に変換して配列に追加しました。私はそれから、可能な限り高い数/文字列を探しました。これはasList()のための最悪のシナリオのシナリオです。

10Kの配列サイズを使用すると、結果は次のようになります。

Sort & Search   : 15
Binary Search   : 0
asList.contains : 0

100Kアレイを使用すると、結果は次のようになります。

Sort & Search   : 156
Binary Search   : 0
asList.contains : 32

そのため、配列がソートされた順序で作成されている場合はバイナリ検索が最も速く、それ以外の場合はasList()。containsが最適な方法です。多くの検索がある場合は、バイナリ検索を使用できるように配列をソートするのが価値があります。それはすべてあなたのアプリケーションに依存します。

私はそれらがほとんどの人が期待する結果であると思うでしょう。これがテストコードです。

import java.util.*;

public class Test
{
    public static void main(String args[])
    {
        long start = 0;
        int size = 100000;
        String[] strings = new String[size];
        Random random = new Random();


        for (int i = 0; i < size; i++)
            strings[i] = "" + random.nextInt( size );

        start = System.currentTimeMillis();
        Arrays.sort(strings);
        System.out.println(Arrays.binarySearch(strings, "" + (size - 1) ));
        System.out.println("Sort & Search : " + (System.currentTimeMillis() - start));

        start = System.currentTimeMillis();
        System.out.println(Arrays.binarySearch(strings, "" + (size - 1) ));
        System.out.println("Search        : " + (System.currentTimeMillis() - start));

        start = System.currentTimeMillis();
        System.out.println(Arrays.asList(strings).contains( "" + (size - 1) ));
        System.out.println("Contains      : " + (System.currentTimeMillis() - start));
    }
}


  • このコードを理解できません。配列の文字列を並べ替えます。そしてbinarySearchの両方の呼び出しで同じ(ソートされた)配列を使用します。どのようにそれはHotSpotランタイム最適化以外の何かを示すことができますか? asList.contains呼び出しと同じです。ソートされた配列からリストを作成した後、それに最も高い値のリストを含めます。もちろん時間がかかるでしょう。このテストの意味は何ですか?不適切に書かれたマイクロベンチマークであることは言うまでもありません - Erik
  • また、バイナリ検索はソートセットにしか適用できないため、ソートと検索がバイナリ検索を使用する唯一の方法です。 - Erik
  • ソートは他のいくつかの理由で既に行われているかもしれません、例えば、それはinitでソートされ、決して変更されることはあり得ません。単独で検索時間をテストするのに使用されます。ただし、これが収まらないのは、マイクロベンチマークの例としてはそれほど魅力的ではないということです。マイクロベンチマークは、Javaで正しく理解するのが難しいことで有名です。たとえば、実際のテストを実行する前にホットスポットの最適化を実行するのに十分なテストコードを実行することが含まれます。落とし穴の例 - Thor84no
  • このテストは3つすべてのテストを実行するため、問題があります。同じJVMインスタンス後のテストは、キャッシュ、JITなどをウォームアップする以前のテストの恩恵を受ける可能性があります。 - Steve Kuo
  • このテストは実際には全く無関係です。並べ替え&検索は線形(n * log(n))の複雑さであり、バイナリ検索は対数であり、ArrayUtils.containsは明らかに線形です。これらのソリューションはまったく異なる複雑さのクラスにあるため、このソリューションを比較することは役に立ちません。 - dragn

30

Java 8では、ストリームを作成して、ストリーム内のいずれかのエントリが一致するかどうかを確認できます。"s"

String[] values = {"AB","BC","CD","AE"};
boolean sInArray = Arrays.stream(values).anyMatch("s"::equals);

または一般的な方法として:

public static <T> boolean arrayContains(T[] array, T value) {
    return Arrays.stream(array).anyMatch(value::equals);
}


  • プリミティブスペシャライゼーションにも注目する価値があります。 - skiwi
  • 追加するには、anyMatchJavaDocはそれを述べています"...May not evaluate the predicate on all elements if not necessary for determining the result."そのため、一致が見つかった後は処理を続行する必要はありません。 - mkobit

29

クイック配列初期化構文を使用する代わりに、Arrays.asListメソッドを使用して同様の方法で直接Listとして初期化することもできます。

public static final List<String> STRINGS = Arrays.asList("firstString", "secondString" ...., "lastString");

それからあなたは(上記のように)することができます:STRINGS.contains("the string you want to find");


24

あなたが使用することができます配列クラス値のバイナリ検索を実行します。配列がソートされていない場合は、同じクラスのソート関数を使用して配列をソートしてから検索する必要があります。


  • あなたはそれを達成するために同じクラスでsort関数を使うことができます...私はそれを私の答えに加えるべきです。 - Thomas Owens
  • おそらく、asList()。contains()アプローチよりもコストがかかるでしょう。このチェックを頻繁に行う必要がある場合を除いて(ただし、公正であるために、最初に並べ替えることができる静的な値の一覧であれば)。 - Joey
  • そうです。どれが最も効果的であるかに関して多くの変数があります。ただし、選択肢があるのは良いことです。 - Thomas Owens
  • これをどのように行うことができるかを教えてください。 - AHH
  • ここでこれを行ういくつかのコード:stackoverflow.com/a/48242328/9131078 - O.O.Balance

15

ObStupidAnswer(ただし、ここにレッスンがあると思います)。

enum Values {
    AB, BC, CD, AE
}

try {
    Values.valueOf(s);
    return true;
} catch (IllegalArgumentException exc) {
    return false;
}


  • 例外のスローは明らかに重いですが、これが機能する場合は値をテストするための新しい方法になります。欠点は、列挙型を事前に定義しなければならないことです。 - James P.

11

実際、Tom Hawtinがソートについて心配する必要はないと提案したようにHashSetを使用すれば、速度は事前ソートされた配列に対するBinary Searchと同じ、おそらくもっと速いです。

それはすべてあなたのコードがどのように設定されているかにかかっているのは明らかですが、私の立場からすると、順番は次のようになります。

UNsorted配列では、

  1. ハッシュセット
  2. asList
  3. 並べ替え&バイナリ

ソート済み配列の場合

  1. ハッシュセット
  2. バイナリ
  3. asList

どちらにしても、HashSet ftw


  • HashSetのメンバーシップはO(1)であり、ソートされたコレクションのバイナリ検索はO(log n)です。 - Skylar Saveland

9

Googleコレクションライブラリをお持ちの場合は、ImmutableSet(http://google-collections.googlecode.com/svn/trunk/javadoc/com/google/common/collect/ImmutableSet.html)を使用すると、Tomの回答を非常に簡単にすることができます。

これは本当に提案された初期化から多くの雑然とを取り除きます

private static final Set<String> VALUES =  ImmutableSet.of("AB","BC","CD","AE");


7

1つの可能な解決策:

import java.util.Arrays;
import java.util.List;

public class ArrayContainsElement {
  public static final List<String> VALUES = Arrays.asList("AB", "BC", "CD", "AE");

  public static void main(String args[]) {

      if (VALUES.contains("AB")) {
          System.out.println("Contains");
      } else {
          System.out.println("Not contains");
      }
  }
}


6

開発者はよくすること:

Set<String> set = new HashSet<String>(Arrays.asList(arr));
return set.contains(targetValue);

上記のコードは機能しますが、リストを最初にsetに変換する必要はありません。リストをセットに変換するには余分な時間がかかります。それは簡単にすることができます:

Arrays.asList(arr).contains(targetValue);

または

   for(String s: arr){
        if(s.equals(targetValue))
            return true;
    }

return false;

最初のものは2番目のものより読みやすいです。


5

Java 8Streamsを使用してください。

List<String> myList =
Arrays.asList("a1", "a2", "b1", "c2", "c1");

myList
.stream()
.filter(s -> s.startsWith("c"))
.map(String::toUpperCase)
.sorted()
.forEach(System.out::println);



4

これを行うには、単純なループを使用するのが最も効率的な方法です。

boolean useLoop(String[] arr, String targetValue) {
    for(String s: arr){
        if(s.equals(targetValue))
            return true;
    }
    return false;
}

への礼儀プログラムクリーク


  • 配列がターゲット値の前にnull参照を含む場合、これはnullポインタ例外をスローします。 - Samuel Edwin Ward
  • String equalsにはinstanceofチェッカーがあるため、ifステートメントはif(targetValue.equals(s))にする必要があります。 - WIll

3

  1. 限られた長さの配列の場合は、次のようにしてください(で与えられます)。camickr)これは繰り返しのチェック、特に長い配列(線形検索)では遅くなります。

     Arrays.asList(...).contains(...)
    
  2. 多数の要素を繰り返しチェックすることでパフォーマンスを向上させる

    • 配列は間違った構造です。使うTreeSetそれに各要素を追加します。それは要素をソートして速いexist()メソッド(二分探索)。

    • 要素が実装している場合Comparable&あなたが欲しいTreeSetそれに従ってソート:

      ElementClass.compareTo()メソッドは以下と互換性がなければなりませんElementClass.equals(): 見るトライアドは戦うために現れていませんか? (Javaセットにアイテムがありません)

      TreeSet myElements = new TreeSet();
      
      // Do this for each element (implementing *Comparable*)
      myElements.add(nextElement);
      
      // *Alternatively*, if an array is forceably provided from other code:
      myElements.addAll(Arrays.asList(myArray));
      
    • そうでなければ、あなた自身のものを使ってくださいComparator

      class MyComparator implements Comparator<ElementClass> {
           int compareTo(ElementClass element1; ElementClass element2) {
                // Your comparison of elements
                // Should be consistent with object equality
           }
      
           boolean equals(Object otherComparator) {
                // Your equality of comparators
           }
      }
      
      
      // construct TreeSet with the comparator
      TreeSet myElements = new TreeSet(new MyComparator());
      
      // Do this for each element (implementing *Comparable*)
      myElements.add(nextElement);
      
    • 見返り:いくつかの要素の存在を確認します。

      // Fast binary search through sorted elements (performance ~ log(size)):
      boolean containsElement = myElements.exists(someElement);
      


  • なぜ迷惑をかけるTreeSetHashSetより速く(O(1))、順序付けは不要です。 - Sean Owen

2

これをチェックして

String[] VALUES = new String[] {"AB","BC","CD","AE"};
String s;

for(int i=0; i< VALUES.length ; i++)
{
    if ( VALUES[i].equals(s) )
    { 
        // do your stuff
    } 
    else{    
        //do your stuff
    }
}


  • それほど効果的ではありませんが、これでも機能します - CrazedCoder
  • これではうまくいきません。elseにとってすべての一致しないアイテム(その配列で「AB」を探している場合、3つの値が一致しないため、3回検索されます)。 - Dukeling

2

Arrays.asList() - >次にcontains()メソッドを呼び出すことは常にうまくいきますが、配列の周りに軽量なリストラッパーを作成する必要がないので検索アルゴリズムがはるかに優れています。これがArrays.asList()の動作です。 。

public boolean findString(String[] strings, String desired){
   for (String str : strings){
       if (desired.equals(str)) {
           return true;
       }
   }
   return false; //if we get here… there is no desired String, return false.
}


  • Arrays.asListO(n)ではありません。これは単なる軽量のラッパーです。実装を見てください。 - Patrick Parker

1

つかいますArray.BinarySearch(array,obj)与えられたオブジェクトを配列で見つけるかどうか。 例:

if (Array.BinarySearch(str, i) > -1) - > true --exists

false - 存在しません


  • これが機能するには、配列をソートする必要があることに注意してください。 - Erik
  • Array.FindIndex(array、obj)もあります。 - Avenger
  • Array.BinarySearchそしてArray.FindIndex.NETメソッドであり、Javaには存在しません。 - ataylor
  • javaに@ataylorがあります。Arrays.binarySearch。しかし、あなたは正しい、Arrays.findIndexはない - mente

1

これを試して:

ArrayList<Integer> arrlist = new ArrayList<Integer>(8);

// use add() method to add elements in the list
arrlist.add(20);
arrlist.add(25);
arrlist.add(10);
arrlist.add(15);

boolean retval = arrlist.contains(10);
if (retval == true) {
    System.out.println("10 is contained in the list");
}
else {
    System.out.println("10 is not contained in the list");
}


1

この議論に参加するのは非常に遅れていますが、この問題を解決するための私のアプローチは、数年前に直面したときには、ここに掲載した他の答えとは少し異なっていました。だれでもそれが役に立つと思うならば、ここで、(contains()方法はArrayUtils.in()このコードでは)

ObjectUtils.java

public class ObjectUtils{

/**
 * A null safe method to detect if two objects are equal.
 * @param object1
 * @param object2
 * @return true if either both objects are null, or equal, else returns false.
 */
public static boolean equals(Object object1,Object object2){
    return object1==null?object2==null:object1.equals(object2);
}

}

ArrayUtils.java

public class ArrayUtils{
/**
 * Find the index of of an object is in given array, starting from given inclusive index.
 * @param ts  Array to be searched in.
 * @param t  Object to be searched.
 * @param start  The index from where the search must start. 
 * @return Index of the given object in the array if it is there, else -1. 
 */
public static <T> int indexOf(final T[] ts, final T t, int start){
    for(int i = start; i < ts.length;++i)
        if(ObjectUtils.equals(ts[i],t))
            return i;
    return -1;
}

/**
 * Find the index of of an object is in given array, starting from 0;
 * @param ts  Array to be searched in.
 * @param t  Object to be searched.
 * @return  indexOf(ts,t,0)
 */
public static <T> int indexOf(final T[] ts, final T t){
    return indexOf(ts, t, 0);
}

/**
 * Detect if the given object is in the given array.
 * @param ts  Array to be searched in.
 * @param t  Object to be searched.
 * @return  If indexOf(ts,t) is greater than -1.
 */
public static <T> boolean in(final T[] ts, final T t){
    return indexOf(ts, t) > -1 ;
}

}

上記のコードからわかるように、他のユーティリティメソッドがあります。ObjectUtils.equals()そしてArrayUtils.indexOf()、それは他の場所でも使われていました。


1

大文字と小文字を区別したくない場合

Arrays.stream(VALUES).anyMatch(s::equalsIgnoreCase);


-2

最初はfalseに設定されているブール値を作成します。ループを実行して配列内のすべての値を確認し、確認している値と比較します。あなたがマッチを得たならば、真偽値をtrueにセットして、そしてループを止めなさい。その後、ブール値がtrueであることを表明します。

リンクされた質問


関連する質問

最近の質問