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

ホームページ Java &#&はじめる Javaの比較対象とコンパレータの違い

Javaの比較対象とコンパレータの違い

Nov 27, 2019 pm 01:20 PM
comparable comparator java 違い コンパレータ

Javaの比較対象とコンパレータの違い

Comparable コンパレータ

Comparable は java.lang パッケージの下にあります。これは本質的に內部コンパレータです。Comparable を実裝するクラスは、それ自體で比較を実行できます。 、比較結果に関しては、自然な比較メソッドcompareToの実裝に依存します。

compareTo の戻り値は -1、0、1 です。コンパレータが比較されるオブジェクトより大きい場合は 1 が返され、等しい場合は 0 が返され、比較されるオブジェクトより小さい場合は -1 が返されます。

Collections.sort および Arrays.sort は、Comparable を実裝するオブジェクトを自動的に並べ替えることができます。

無料のオンライン學習ビデオの推奨: java 學習

例は次のとおりです。ノード オブジェクトを構築し、ノード オブジェクト間の比較を通じて Comparable の使用法を検証します。

ノード オブジェクトの実裝は次のとおりです。

public class Node implements Comparable<Object>{
	
	private int num;
	
	private String name;

	@Override
	public String toString() {
		return "num=" + num + " name=" + name;
	}

	public Node(int num, String name) {
		super();
		this.num = num;
		this.name = name;
	}

	public Node() {
		super();
	}

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	@Override
    public int compareTo(Object o) {
		Node node = (Node)o;
        return this.num - node.getNum();
    }
}

ご覧のとおり、Node の Comparable インターフェイスを実裝し、compareTo メソッドをオーバーライドしました。

最初にテストするために、10 個の Node オブジェクトを作成してリストに追加し、順序を入れ替えます。

public class MyTest {

	public static void main(String[] args) {
		List<Node> list = new ArrayList<Node>();
		for(int i = 0;i < 10;i++) {
			list.add(new Node(i,"node"));
		}
		//打亂順序
		Collections.shuffle(list);
		for (Node node : list) {
			System.out.println(node);
		}
	}
}

結果は次のように表示されます。

num=7 name=node
num=0 name=node
num=5 name=node
num=9 name=node
num=6 name=node
num=3 name=node
num=4 name=node
num=8 name=node
num=1 name=node
num=2 name=node

出力の順序が崩れました。次に、Collections.sort を使用して並べ替えます。

public class MyTest {

	public static void main(String[] args) {
		List<Node> list = new ArrayList<Node>();
		for(int i = 0;i < 10;i++) {
			list.add(new Node(i,"node"));
		}
		//打亂順序
		Collections.shuffle(list);
		Collections.sort(list);
		for (Node node : list) {
			System.out.println(node);
		}
	}
}

Collections.sort は、compareTo メソッドの定義に従って実際に比較します。以前に num の昇順で並べ替えを定義しました。現(xiàn)在の並べ替え結果は次のようになります:

num=0 name=node
num=1 name=node
num=2 name=node
num=3 name=node
num=4 name=node
num=5 name=node
num=6 name=node
num=7 name=node
num=8 name=node
num=9 name=node

Comparator

Comparatorjava.util パッケージの下にあり、本質的には外部コンパレータです。クラスが內部的に Comparable を実裝していない場合、または Comparable を実裝しているが比較メソッドが必要なものではない場合は、Comparator の実裝を検討できます。 Comparator インターフェースには Compare メソッドがあり、その使用法は Comparable の CompareTo と同じです。

並べ替え順序を制御するには、Comparator を並べ替えメソッドに渡す必要があります。いくつかの並べ替えメソッドの使用法を確認すると、それらのメソッドが Comparator パラメーターに渡せることがわかります。

Collections.sort(List<T> list, Comparator<? super T> c);
Arrays.sort(T[] a, Comparator<? super T> c);

以前の Node オブジェクトを変更し、Comparable を実裝しなくなりました。

public class Node{
	
	private int num;
	
	private String name;

	@Override
	public String toString() {
		return "num=" + num + " name=" + name;
	}

	public Node(int num, String name) {
		super();
		this.num = num;
		this.name = name;
	}

	public Node() {
		super();
	}

	public int getNum() {
		return num;
	}

	public void setNum(int num) {
		this.num = num;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}

コンパレータを渡すことで降順ソートを実現(xiàn)しようとします。

public class MyTest {

	public static void main(String[] args) {
		List<Node> list = new ArrayList<Node>();
		for(int i = 0;i < 10;i++) {
			list.add(new Node(i,"node"));
		}
		//打亂順序
		Collections.shuffle(list);
		
		Collections.sort(list, new Comparator<Node>() {
            @Override
            public int compare(Node o1, Node o2) {
                return o2.getNum()-o1.getNum();
            }
        });
		
		for (Node node : list) {
			System.out.println(node);
		}
	}
}

結果は次のとおりです。

num=9 name=node
num=8 name=node
num=7 name=node
num=6 name=node
num=5 name=node
num=4 name=node
num=3 name=node
num=2 name=node
num=1 name=node
num=0 name=node

Comparator は逆順比較を実裝します。

概要

Comparable は內部コンパレータであり、Comparator は外部コンパレータです。クラスが Comparable インターフェイスを実裝していないが、並べ替える必要がある場合は、次のことを考慮できます。コンパレータを使用します。別の観點から見ると、比較アルゴリズムを変更する必要がある場合は、Comparable の実裝クラスも変更する必要があるため、Comparable インターフェイスを使用することの結合度は Comparator の結合度よりも大きくなります。

この記事は java クイック スタート コラムからのものです。皆さんも一緒に議論したり學んだりすることを歓迎します。

以上が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 ツール。

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中國語版

SublimeText3 中國語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

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

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PHPコメントを書くためのヒント PHPコメントを書くためのヒント Jul 18, 2025 am 04:51 AM

PHPコメントを書くための鍵は、目的と仕様を明確にすることです。コメントは、「何が行われたのか」ではなく「なぜ」を説明する必要があり、冗長性や単純さを避けてください。 1.読みやすさとツールの互換性を向上させるために、クラスおよびメソッドの説明にdocblock(/*/)などの統(tǒng)合形式を使用します。 2。JSジャンプを手動で出力する必要がある理由など、ロジックの背後にある理由を強調します。 3.複雑なコードの前に概要説明を追加し、手順でプロセスを説明し、全體的なアイデアを理解するのに役立ちます。 4. TodoとFixmeを合理的に使用して、To Doアイテムと問題をマークして、その後の追跡とコラボレーションを促進します。優(yōu)れた注釈は、通信コストを削減し、コードメンテナンスの効率を向上させることができます。

効果的なPHPコメントを書く 効果的なPHPコメントを書く Jul 18, 2025 am 04:44 AM

コメントは、古いインターフェイスとの互換性やサードパーティの制限など、機能ではなくコードの存在の理由を説明したいため、不注意にすることはできません。コメントしなければならない領域には、複雑な條件付き判斷、特別なエラー処理ロジック、一時的なバイパス制限が含まれます。コメントを書くためのより実用的な方法は、シーンに基づいてシングルラインのコメントを選択したり、コメントをブロックすることです。ドキュメントブロックコメントを使用して、関數(shù)、クラス、ファイルの開始時にパラメーターと返品値を説明し、コメントを更新します。複雑なロジックについては、前のロジックにラインを追加して、全體的な意図を要約できます。同時に、コードを封印するためにコメントを使用しないでください。バージョン制御ツールを使用します。

コメントで読みやすさを向上させます コメントで読みやすさを向上させます Jul 18, 2025 am 04:46 AM

良いコメントを書くための鍵は、コードの読みやすさを改善するために「何が行われたか」ではなく「なぜ」を説明することです。 1。コメントは、価値の選択や処理の背後にある考慮事項など、論理的な理由を説明する必要があります。 2。複雑なロジックに段落注釈を使用して、関數(shù)またはアルゴリズムの全體的な考え方を要約します。 3.コードとの一貫性を確保し、誤解を招くことを避け、必要に応じて時代遅れのコンテンツを削除するために、コメントを定期的に維持します。 4.コードをレビューする際にコメントを同期して確認し、コードコメントの負擔を軽減するためにドキュメントを介してパブリックロジックを記録します。

効果的なPHPコメント 効果的なPHPコメント Jul 18, 2025 am 04:33 AM

PHPコメントを書くための鍵は、明確で、便利で簡潔です。 1。コメントは、複雑な條件付き判斷の論理的目的を説明するなど、コード自體を説明するのではなく、コードの背後にある意図を説明する必要があります。 2.読みやすさを改善するために、魔法の値、古いコード互換性、APIインターフェイスなどの重要なシナリオにコメントを追加します。 3.コードコンテンツの重複を避け、簡潔かつ具體的に保ち、PHPDOCなどの標準形式を使用します。 4。コメントは、正確性を確保するためにコードと同期して更新する必要があります。他の人の観點から良いコメントを考えるべきであり、理解のコストを削減し、ナビゲーションデバイスを理解するコードを理解する必要があります。

PHP開発環(huán)境のセットアップ PHP開発環(huán)境のセットアップ Jul 18, 2025 am 04:55 AM

最初のステップは、統(tǒng)合環(huán)境パッケージXAMPPまたはMAMPを選択してローカルサーバーを構築することです。 2番目のステップは、プロジェクトのニーズに応じて適切なPHPバージョンを選択し、複數(shù)のバージョンの切り替えを構成することです。 3番目のステップは、editorとしてvscodeまたはphpstormを選択し、xdebugでデバッグすることです。さらに、開発を支援するために、作曲家、PHP_CODESNIFFER、PHPUNIT、およびその他のツールをインストールする必要があります。

PHP変數(shù)の理解 PHP変數(shù)の理解 Jul 17, 2025 am 04:11 AM

PHP変數(shù)は$で始まり、命名は數(shù)字から始めることができず、ケースに敏感であるなど、ルールに従う必要があります。変數(shù)の範囲は、ローカル、グローバル、ハイパーグローバルに分割されます。グローバル変數(shù)はグローバルを使用してアクセスできますが、パラメーターで渡すことをお勧めします??蓧鋲鋽?shù)と參照割り當ては注意して使用する必要があります。変數(shù)はデータを保存するための基礎であり、それらのルールとメカニズムを正しく習得することは開発にとって重要です。

構文をコメントするPHP 構文をコメントするPHP Jul 18, 2025 am 04:56 AM

PHPコメントを使用するには3つの一般的な方法があります。単一ラインコメントは、現(xiàn)在の行の説明のために//などのコードロジックを簡単に説明するのに適しています。マルチラインコメント/*...*/関數(shù)またはクラスの詳細な説明に適しています。ドキュメントコメントdocblockは /**で起動して、IDEの迅速な情報を提供します。それを使用する場合、ナンセンスを避け、同期して更新し続け、コメントを使用してコードを長時間ブロックしないでください。

PHP比較演算子 PHP比較演算子 Jul 18, 2025 am 04:57 AM

PHP比較演算子は、変換のタイプの問題に注意を払う必要があります。 1。==を使用すると値のみを比較すると、1 == "1"などのタイプ変換が実行されます。 2。===を使用するには、1 === "1"などのタイプと同じ値を必要とします。 3。サイズの比較は、「Apple」などの値や文字列で使用できます。

See all articles