目次
2。バイナリ検索(ソートされた配列の場合)
3。アレイリストまたはコレクションの使用(代替アプローチ)
4。ストリームの使用(Java 8)
ホームページ Java &#&チュートリアル Javaの配列内の要素をどのように検索しますか?

Javaの配列内の要素をどのように検索しますか?

Sep 02, 2025 am 02:03 AM
java 配列

Javaで配列要素を検索する最良の方法は、配列がソートされているかどうかとそのパフォーマンス要件によって異なります。並べ替えられた配列の場合、arrays.binarysearch()(time complexity o(log n))を使用します。オブジェクト配列を使用してシンプルさを追求する場合、リストに変換してcontains()またはindexof()を呼び出すことができます。 Java 8の機能スタイルを好む場合、arrays.stream()。anymatch()を使用して単純なコードを実装できますが、パフォーマンスは従来のループのパフォーマンスよりもわずかに低いため、メソッドを選択するには、パフォーマンス、読みやすさ、データがソートされるかどうかを選択する必要があります。

Javaの配列内の要素をどのように検索しますか?

Javaでは、配列内の要素を検索することは、配列がソートされているかどうか、どのようなパフォーマンスやシンプルさを目指しているかによって異なります。最も一般的で実用的な方法は次のとおりです。

1。線形検索(整理されていないアレイの場合)

配列がソートされていない場合、最も単純なアプローチは、一致するまで各要素をループすることです。

 int [] arr = {10、20、30、40、50};
intターゲット= 30;
boolean fund = false;

for(int i = 0; i <arr.length; i){
    if(arr [i] ==ターゲット){
        system.out.println( "indexで見つかった要素" i);
        fund = true;
        壊す;
    }
}
if(!found){
    System.out.println( "要素が見つかりません");
}
  • ソートされているかどうかにかかわらず、あらゆる配列で動作します。
  • 時間の複雑さ:o(n)。
  • アレイが小さくなっているか、整理されていない場合が最適です。

2。バイナリ検索(ソートされた配列の場合)

配列がソートされている場合は、バイナリ検索を使用してパフォーマンスを向上させることができます。

Arrays.binarySearch()から組み込みメソッドを使用できます。

 java.util.arraysをインポートします。

int [] arr = {10、20、30、40、50};
intターゲット= 30;

int index = arrays.binarysearch(arr、target);

if(index> = 0){
    System.out.println( "index" indexで見つかった要素);
} それ以外 {
    System.out.println( "要素が見つかりません");
}
  • ソートされた配列でのみ動作します。
  • 時間の複雑さ:o(log n)。
  • 配列がソートされていない場合は、最初にArrays.sort(arr)を使用してソートしますが、O(n log n)オーバーヘッドが追加されます。

重要:unsortedアレイでbinarySearchを使用する場合、結果は未定義です。

3。アレイリストまたはコレクションの使用(代替アプローチ)

生の配列の代わりにコレクションを使用することができる場合は、配列をListに変換し、 contains()またはindexOf()を使用できます。

 java.util.arraysをインポートします。
java.util.listをインポートします。

integer [] arr = {10、20、30、40、50};
リスト<Integer> list = arrays.aslist(arr);

if(list.contains(30)){
    system.out.println( "要素Found");
}
  • contains() trueまたはfalseを返します。
  • list.indexOf(30) indexまたは-1が見つかっていない場合は-1を返します。
  • 注: int[]のような原始的な配列ではなく、ラッパータイプ( Integer[] )で動作します。

4。ストリームの使用(Java 8)

Modern Javaでは、より読みやすいワンライナーにストリームを使用できます。

 java.util.arraysをインポートします。

int [] arr = {10、20、30、40、50};
boolean fund = arrays.stream(arr).anymatch(x-> x == 30);

if(fund){
    system.out.println( "要素Found");
}
  • anyMatch() 、要素が一致する場合にtrueを返します。
  • より多くの操作にIntStream使用することもできます。
  • シンプルなループよりもわずかにオーバーヘッドですが、クリーンで機能的です。

したがって、最良の方法はあなたの状況に依存します:

  • アンソートアレイ、小サイズ:線形検索(シンプルループ)を使用します。
  • 並べ替えられた配列Arrays.binarySearch()を使用します。
  • クリーンな構文とオブジェクトの使用が必要ですListに変換し、使用するcontainsを使用します。
  • Java 8を使用して、機能スタイルを好むArrays.stream()を使用します。

基本的に、それはパフォーマンス、読みやすさ、およびデータがソートされているかどうかのトレードオフに関するものです。

以上がJavaの配列内の要素をどのように検索しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Stock Market GPT

Stock Market GPT

AIを活用した投資調査により賢明な意思決定を実現

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHPでオブジェクトを配列に変換する方法は? PHPでオブジェクトを配列に変換する方法は? Sep 14, 2025 am 03:14 AM

(配列)を使用して、単純なオブジェクトを配列に変換します。プライベートまたは保護されたプロパティが含まれている場合、キー名に特殊文字があります。ネストされたオブジェクトの場合、再帰関数を使用して変換を横断して、すべての階層オブジェクトが連想配列になるようにする必要があります。

Javaに同等のインターフェイスを実装する方法は? Javaに同等のインターフェイスを実装する方法は? Sep 16, 2025 am 03:44 AM

definteCompareTomethodFornatural Ordering.1.ImplementComparableInterface.2.OverrideCompareTotoreturtoreturnegativative、Zero、およびOrposiveValuesBasedOnComparison.3.usecollections.sort()orarrays.sort()tosorturts.4.fultifjultions.4.fultiplefields、c

配列がPHPで連想的またはシーケンシャルであるかどうかを確認する方法は? 配列がPHPで連想的またはシーケンシャルであるかどうかを確認する方法は? Sep 16, 2025 am 05:40 AM

anarrayis anrayis sevingentivesismatchAcontininteger secencecentartingingfrom0、sevinedbycomparingArray_keys($ array)witharray_keys(array_keys($ array));それ以外の場合、itisassociative。

Javaにインターフェイスを実装する方法は? Javaにインターフェイスを実装する方法は? Sep 18, 2025 am 05:31 AM

実装キーワードを使用して、インターフェイスを実装します。クラスは、インターフェイス内のすべてのメソッドの特定の実装を提供する必要があります。複数のインターフェイスをサポートし、メソッドが公開されるようにコンマで区切られています。 Java 8の後のデフォルトおよび静的メソッドは、書き直す必要はありません。

Javaの文字列からファイル拡張子を取得するにはどうすればよいですか? Javaの文字列からファイル拡張子を取得するにはどうすればよいですか? Sep 16, 2025 am 03:40 AM

togetafileextensionInjava、uselastindexof()tofindthelastdotandextrawthesubstringafterit、sursingthedotis notatindex0orabsent;

Javaのプロパティファイルを読み取る方法は? Javaのプロパティファイルを読み取る方法は? Sep 16, 2025 am 05:01 AM

プロパティクラスを使用して、Java構成ファイルを簡単に読み取ります。 1. config.propertiesをリソースディレクトリに入れ、getClassLoader()。getResourceasStream()を介してロードし、Load()メソッドを呼び出してデータベース構成を読み取ります。 2。ファイルが外部パスにある場合は、FileInputStreamを使用してロードします。 3. GetProperty(key、defaultValue)を使用して欠落しているキーを処理し、デフォルト値を提供して、例外処理と入力検証を確保します。

Javaでメソッドオーバーロードを使用する方法は? Javaでメソッドオーバーロードを使用する方法は? Sep 16, 2025 am 02:53 AM

MethodoverloadingAllowsMultipreMethodswithesaMenameButdifferentParametersinaClass.1.ItRovesCoderEadabilityAndReadabilityBySupportingVariedInputs.2.differences -MustbeinParameternumber、Type、Ororder -notreturntyPealone..

Javaでシンプルなラムダの表現を書く方法は? Javaでシンプルなラムダの表現を書く方法は? Sep 17, 2025 am 01:46 AM

Lambda式は、機能界面のコードを簡素化するために使用されます。たとえば、() - > system.out.println( "hello")はパラメーター印刷を意味しません。 runnableTask =() - > System.out.println( "Running ...")匿名クラスを置き換えます。 (a、b) - > a bは、バイナリオーペレータインターフェイスを実装します。コンパレータ、消費者、およびcollections.sortなどのその他のインターフェイスによく使用されます(names、(a、b) - > a.compareto(b)

See all articles