国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ Java &#&はじめる Java で一般的に使用されるデータ構(gòu)造は何ですか?

Java で一般的に使用されるデータ構(gòu)造は何ですか?

Apr 14, 2021 pm 04:52 PM
java データ構(gòu)造

Java データ構(gòu)造には次のものが含まれます: 1. 配列、2. 再帰的データ構(gòu)造であるリンク リスト、3. 「後入れ先出し」および「先入れ後」の原則に従ってデータを格納するスタックout"; 4. キュー; 5. n (n>0) 個(gè)の限定されたノードで構(gòu)成される階層関係のコレクションであるツリー; 6. ヒープ; 7. グラフ; 8. ハッシュ テーブル。

Java で一般的に使用されるデータ構(gòu)造は何ですか?

#このチュートリアルの動(dòng)作環(huán)境: Windows7 システム、Java8 バージョン、DELL G3 コンピューター。

一般的な Java データ構(gòu)造

これら 8 つのデータ構(gòu)造の違いは何ですか?

①、配列

利點(diǎn):

  • インデックスによる要素のクエリは非常に高速です。

  • ##インデックスによって配列を走査することも非常に便利です。
  • #欠點(diǎn):

#配列のサイズは作成後に決定され、拡張できません;

  • 配列は 1 つのタイプのデータのみを保存できます;

  • 要素の追加と削除の操作は、他の要素を移動(dòng)する必要があるため時(shí)間がかかります。

②. リンク リスト

書(shū)籍「アルゴリズム (第 4 版)」では、リンク リストを次のように定義しています。

  • リンク リストは再帰的なデータ構(gòu)造です???(null) か、ノードへの參照 (ノード) です。ノードには要素と、別のリンク リストへのポインタもあります。 。

    Java の LinkedList クラスは、リンク リストの構(gòu)造をコードの形式で非常に鮮明に表現(xiàn)できます。

    public class LinkedList<E> {
        transient Node<E> first;
        transient Node<E> last;
    
        private static class Node<E> {
            E item;
            Node<E> next;
            Node<E> prev;
    
            Node(Node<E> prev, E element, Node<E> next) {
                this.item = element;
                this.next = next;
                this.prev = prev;
            }
        }
    }

  • これは、これは二重リンク リストです。現(xiàn)在の要素項(xiàng)目には prev と next の両方がありますが、最初の prev は null で、last の next は null です。一方向リンクリストの場(chǎng)合、次のみが存在し、前は存在しません。
リンク リストは順次に格納する必要がないため、リンク リストの挿入時(shí)および挿入時(shí)に O(1) の時(shí)間計(jì)算量を達(dá)成できます。削除 (再実行する必要があります。參照をポイントするだけで、配列などの他の要素を移動(dòng)する必要はありません)。さらに、リンク リストは、データ サイズを事前に知っておく必要があるという配列の欠點(diǎn)も克服し、柔軟な動(dòng)的なメモリ管理を可能にします。

利點(diǎn):

容量を初期化する必要がない;

  • 任意の要素を追加できる;

  • 挿入および削除時(shí)に更新する必要があるのは參照のみです。

  • #欠點(diǎn):

には多數(shù)の參照が含まれており、大量のメモリ領(lǐng)域を占有します。

  • 検索 要素はリンク リスト全體を検索する必要があり、時(shí)間がかかります。

  • ③、スタック

スタックはバケツのようなもので、底部は密閉されており、上部は開(kāi)いています。水缶は出入りできます。バケツを使ったことのある友人なら、この原理を理解しているはずです。最初に入る水はバケツの底にあり、後から入る水はバケツの上部にあり、最後に入る水が最初に注ぎ出されます。そして最初に入った水は最後に注ぎ出されます。 同様に、スタックは「後入れ先出し」と「先入れ後出し」の原則に従ってデータを保存します。最初に挿入されたデータはスタックの一番下にプッシュされ、その後、挿入されたデータがスタックの最後に挿入されます。データはスタックの先頭にあり、スタックの先頭から順に読み出されます。

④、キュー

キューは、両端が開(kāi)いた水道管の一部のようなものです。 . 水は一方の端から入り、もう一方の端から出ます。先に入った水が先に出て、最後に入った水が最後に出ます。 水道管とは少し異なり、キューは 2 つの端を定義します。一方の端はキューの先頭と呼ばれ、もう一方の端はキューの末尾と呼ばれます。キューの先頭では削除操作 (デキュー) のみが許可され、キューの末尾では挿入操作 (エンキュー) のみが許可されます。

⑤. ツリー

ツリーは典型的な非線形構(gòu)造であり、n A で構(gòu)成されます。 (n>0) 個(gè)の限定されたノードで構(gòu)成される階層関係のセット。

これが「ツリー」と呼ばれる理由は、このデータ構(gòu)造が根が上にあり、葉が下にあることを除いて、逆さまの木のように見(jiàn)えるためです。ボトム。ツリー データ構(gòu)造には次の特徴があります:

各ノードには限られた子ノードしかないか、子ノードがありません;

  • 親ノードがありませんこのノードはルート ノードと呼ばれます。

  • ルート以外の各ノードには親ノードが 1 つだけあります。

  • ルート ノードは除きます。 、各子ノードは、複數(shù)の互いに素なサブツリーに分割できます。

  • 次の図は、ツリーに関するいくつかの用語(yǔ)を示しています。

    バイナリ検索ツリーの特性に基づくと、他のデータ構(gòu)造に対する利點(diǎn)は、検索と挿入の時(shí)間計(jì)算量が O(logn) と低いことです。上の図から 5 つの要素を見(jiàn)つけたい場(chǎng)合は、ルート ノード 7 から開(kāi)始します。5 が見(jiàn)つかった場(chǎng)合、それは 7 の左側(cè)にある必要があります。4 が見(jiàn)つかった場(chǎng)合、5 は 4 の右側(cè)にある必要があります。 6 が見(jiàn)つかった場(chǎng)合、5 は 6 の左側(cè)にある必要があります。橫、見(jiàn)つかりました。

    理想的には、BST を通じてノードを見(jiàn)つけることで、チェックする必要があるノードの數(shù)を半分に減らすことができます。

    バランス二分木: 任意のノードの 2 つのサブツリー間の高さの差が 1 以下の場(chǎng)合に限り、二分木になります。 1962 年に舊ソ連の數(shù)學(xué)者アデルセ?ヴェルスキルとランディスによって提案された高度にバランスの取れた二分木は、科學(xué)者の英語(yǔ)名に従って AVL 木とも呼ばれます。

    バランス二分木は本質(zhì)的には二分探索木ですが、左右のサブツリー間の高さの差を制限し、線形構(gòu)造に向かって進(jìn)化する傾向にある傾いたツリーなどの狀況を回避するために、それぞれの二分探索木はノードの左右の部分木が制限されており、左右の部分木の高さの差をバランス係數(shù)と呼び、ツリー內(nèi)の各ノードのバランス係數(shù)の絶対値は 1 以下です。

    バイナリ ツリーのバランスをとる際の難しさは、ノードが削除または追加されたときに、左右の回転によって左右のバランスをどのように維持するかということです。

    Java で最も一般的なバランスのとれた二分木は赤黒ツリーです。ノードは赤または黒です。二分木のバランスは色の制約によって維持されます:

    1) 各ノード赤または黒のみ可能です。

    2) ルート ノードは黒です。

    3) 各リーフ ノード (NIL ノード、空のノード) は黒です。

    4) ノードが赤の場(chǎng)合、その子ノードは両方とも黒です。つまり、隣接する 2 つの赤いノードはパス上に表示できません。

    5) 任意のノードからその各リーフへのすべてのパスには、同じ數(shù)の黒いノードが含まれます。

    ⑥、ヒープ

    ヒープは、ツリーの配列オブジェクトとみなすことができます。次の特性:
    • ヒープ內(nèi)のノードの値は、常にその親ノードの値よりも大きくも小さくもありません。
    • ヒープは常に完全なバイナリ ツリーです。

    最大のルート ノードを持つヒープは最大ヒープまたは大ルート ヒープと呼ばれ、最小のルート ノードを持つヒープは最小ヒープまたは小ルート ヒープと呼ばれます。

    線形構(gòu)造では、データ要素と各データ要素 (最初と最後を除く) の間に一意の線形関係が満たされます。それぞれには、固有の「先行者」と「後続者」;

    ツリー構(gòu)造では、データ要素間に明らかな階層関係があり、各データ要素は前の層 (親ノード) の 1 つの要素にのみ関連しており、複數(shù)の要素に関連付けられています。次の層の要素 (子ノード) は関連しています;

    グラフ構(gòu)造では、ノード間の関係は任意であり、グラフ內(nèi)の任意の 2 つのデータ要素が関連している可能性があります。

    ⑧、ハッシュ テーブル

    ハッシュ テーブルは、ハッシュ テーブルとも呼ばれ、キー コード値 (キー) を渡すことができるハッシュ テーブルの一種です。 -value) 直接アクセスできるデータ構(gòu)造であり、その最大の特徴は、検索、挿入、削除を迅速に実裝できることです。

    配列の最大の特徴は、検索は簡(jiǎn)単ですが、挿入や削除が難しいことですが、逆に、リンクリストは、検索は難しいが、挿入や削除が簡(jiǎn)単であることです。ハッシュ テーブルは両方の利點(diǎn)を完璧に組み合わせており、Java の HashMap はこれに基づいてツリーの利點(diǎn)も追加します。

    ハッシュ関數(shù)は、ハッシュ テーブルで非常に重要な役割を果たし、任意の長(zhǎng)さの入力を固定長(zhǎng)の出力に変換できます。ハッシュ値。ハッシュ関數(shù)を使用すると、データ シーケンスへのアクセス プロセスがより高速かつ効率的になり、データ要素を迅速に見(jiàn)つけることができます。

    キーワードが k の場(chǎng)合、その値は hash(k)

    の保存場(chǎng)所に保存されます。したがって、k に対応する値はトラバーサルなしで直接取得できます。 ###

    2 つの異なるデータ ブロックにおいて、同じハッシュ値を持つ可能性は非常に小さい、つまり、特定のデータ ブロックについて、同じハッシュ値を持つデータ ブロックを見(jiàn)つけることは非常に困難です。さらに、データ ブロックの場(chǎng)合、その 1 ビットが変更されただけでも、ハッシュ値の変化は非常に大きくなります。これがハッシュの値です。

    可能性は非常に低いですが、それでも発生します。ハッシュの競(jìng)合が発生した場(chǎng)合、Java の HashMap は配列內(nèi)の同じ位置にリンク リストを追加します。リンク リストの長(zhǎng)さが 8 を超える場(chǎng)合は、 、赤と黒に変換されます ツリーが処理されます - これはいわゆるジッパーメソッド (配列リンクリスト) です。

    プログラミング関連の知識(shí)について詳しくは、プログラミング ビデオをご覧ください。 !

以上がJava で一般的に使用されるデータ構(gòu)造は何ですか?の詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

JDBCを使用してJavaのトランザクションを処理する方法は? JDBCを使用してJavaのトランザクションを処理する方法は? Aug 02, 2025 pm 12:29 PM

JDBCトランザクションを正しく処理するには、最初に自動(dòng)コミットモードをオフにし、次に複數(shù)の操作を?qū)g行し、結(jié)果に応じて最終的にコミットまたはロールバックする必要があります。 1。CONN.SETAUTOCOMMIT(FALSE)を呼び出して、トランザクションを開(kāi)始します。 2。挿入や更新など、複數(shù)のSQL操作を?qū)g行します。 3。すべての操作が成功した場(chǎng)合はconn.commit()を呼び出し、データの一貫性を確保するために例外が発生した場(chǎng)合はconn.rollback()を呼び出します。同時(shí)に、リソースを使用してリソースを管理し、例外を適切に処理し、接続を密接に接続するために、接続の漏れを避けるために使用する必要があります。さらに、接続プールを使用してセーブポイントを設(shè)定して部分的なロールバックを達(dá)成し、パフォーマンスを改善するためにトランザクションを可能な限り短く保つことをお?jiǎng)幛幛筏蓼埂?/p>

Javaでカレンダーを操作する方法は? Javaでカレンダーを操作する方法は? Aug 02, 2025 am 02:38 AM

Java.Timeパッケージのクラスを使用して、古い日付とカレンダーのクラスを置き換えます。 2。LocalDate、LocalDateTime、LocalTimeを通じて現(xiàn)在の日付と時(shí)刻を取得します。 3。of()メソッドを使用して特定の日付と時(shí)刻を作成します。 4.プラス/マイナスメソッドを使用して、時(shí)間を不正に増加させて短縮します。 5. ZonedDateTimeとZoneIDを使用して、タイムゾーンを処理します。 6。DateTimeFormatterを介したフォーマットおよび解析の文字列。 7.インスタントを使用して、必要に応じて古い日付型と互換性があります?,F(xiàn)代のJavaでの日付処理は、java.timeapiを使用することを優(yōu)先する必要があります。

Javaフレームワークの比較:Spring Boot vs Quarkus vs Micronaut Javaフレームワークの比較:Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

Pre-formanceTartuptimeMemoryusage、quarkusandmicronautleadduetocopile-timeprocessingingandgraalvsupport、withquarkusoftentylightbetterine serverlessシナリオ。

Garbage CollectionはJavaでどのように機(jī)能しますか? Garbage CollectionはJavaでどのように機(jī)能しますか? Aug 02, 2025 pm 01:55 PM

JavaのGarbage Collection(GC)は、メモリを自動(dòng)的に管理するメカニズムであり、到達(dá)不可能なオブジェクトを取り戻すことでメモリ漏れのリスクを軽減します。 1.GCルートオブジェクトからのオブジェクトのアクセシビリティ(スタック変數(shù)、アクティブスレッド、靜的フィールドなど)、および到達(dá)不可能なオブジェクトはゴミとしてマークされています。 2。マーククリアリングアルゴリズムに基づいて、すべての到達(dá)可能なオブジェクトをマークし、マークのないオブジェクトをクリアします。 3.世代の収集戦略を採(cǎi)用する:新世代(Eden、S0、S1)は頻繁にMinorGCを?qū)g行します。高齢者のパフォーマンスは少なくなりますが、MajorGCを?qū)g行するのに時(shí)間がかかります。 Metaspaceはクラスメタデータを保存します。 4。JVMはさまざまなGCデバイスを提供します。SerialGCは小さなアプリケーションに適しています。 ParallelGCはスループットを改善します。 CMSが減少します

ユーザーデータにHTML「入力」タイプを使用します ユーザーデータにHTML「入力」タイプを使用します Aug 03, 2025 am 11:07 AM

適切なHTMLinputタイプを選択すると、データの精度を向上させ、ユーザーエクスペリエンスを向上させ、使いやすさを向上させることができます。 1.テキスト、電子メール、電話、番號(hào)、日付など、データ型に従って対応する入力タイプを選択します。 2。HTML5を使用して、より直感的な相互作用方法を提供できるU(xiǎn)RL、色、範(fàn)囲、検索などの新しいタイプを追加します。 3.プレースホルダーと必要な屬性を使用して、フォームフィリングの効率と精度を改善しますが、プレースホルダーがラベルを置き換えることはできないことに注意してください。

Javaビルドツールの比較:Maven vs. Gradle Javaビルドツールの比較:Maven vs. Gradle Aug 03, 2025 pm 01:36 PM

gradleisthebetterchoiceformostnewprojectoitssuperorfficability、performance、andmoderntoolingsupport.1.gradle’sgroovy/kotlindslismoreconciseandexpressiveethanmaven’sverboseml.2.gradleorformsmavenbenbumebutedwitedwitedwitedspedexは

説明された延期聲明の例で進(jìn)みます 説明された延期聲明の例で進(jìn)みます Aug 02, 2025 am 06:26 AM

Deferは、クリーニングリソースなど、関數(shù)が戻る前に指定された操作を?qū)g行するために使用されます。パラメーターは、延期時(shí)にすぐに評(píng)価され、関數(shù)は最後のファーストアウト(LIFO)の順に実行されます。 1.複數(shù)の債務(wù)は、宣言の逆の順序で実行されます。 2.ファイルの閉鎖などの安全なクリーニングに一般的に使用されます。 3。指定された返品値を変更できます。 4.回復(fù)に適したパニックが発生した場(chǎng)合でも実行されます。 5。リソースの漏れを防ぐために、ループで延期の亂用を避けます。正しい使用により、コードのセキュリティと読みやすさが向上します。

HTTPミドルウェアロギングの例を例に進(jìn)めます HTTPミドルウェアロギングの例を例に進(jìn)めます Aug 03, 2025 am 11:35 AM

GOのHTTPログミドルウェアは、リクエストメソッド、パス、クライアントIP、および時(shí)間がかかることを記録できます。 1. http.handlerfuncを使用してプロセッサをラップします。2。next.servehttpを呼び出す前後の開(kāi)始時(shí)間と終了時(shí)間を記録します。完全なサンプルコードの実行が検証されており、中小のプロジェクトの開(kāi)始に適しています。拡張機(jī)能の提案には、ステータスコードのキャプチャ、JSONログのサポート、リクエストIDトラッキングが含まれます。

See all articles