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

ホットAIツール

Undress AI Tool
脱衣画像を無料で

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

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

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック

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

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

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

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

togetafileextensionInjava、uselastindexof()tofindthelastdotandextrawthesubstringafterit、sursingthedotis notatindex0orabsent;

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

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

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