Ordering は、Guava クラス ライブラリによって提供されるシャープで強力な比較ツールです。Guava の Ordering は、JDK Comparator よりも強力です。拡張が非常に簡単で、複雑なコンパレータを簡単に構築して、コンテナの比較、並べ替え、その他の操作に使用できます。
本質的に、Ordering インスタンスは特別な Comparator インスタンスにすぎません。順序付けは、コンパレーターに依存するメソッド (Collections.max など) を単純に取得し、それをインスタンス メソッドとして使用できるようにします。さらに、Ordering はメソッド呼び出しのチェーン化と既存のコンパレーターの機能強化を提供します。
それでは、Orderingにおける具体的な方法と簡単な使用例を見ていきましょう。
一般的な静的メソッド:
natural(): Comparable 型の自然な順序を使用します。例: 整数は小さいものから大きいものへ、文字列は辞書順です。
usingToString(): toString() によって返された文字列を使用します。 in Dictionary order 順序でソート;
arbitrary(): すべてのオブジェクトの任意の順序を返します。つまり、compare(a, b) == 0 は a == b (同一性の等価性) です。 順序自体には意味はありませんが、VM の存続期間中は一定です。
[code]import java.util.List; import org.junit.Test; import com.google.common.collect.Lists; import com.google.common.collect.Ordering; public class OrderingTest { @Test public void testStaticOrdering(){ List<String> list = Lists.newArrayList(); list.add("peida"); list.add("jerry"); list.add("harry"); list.add("eva"); list.add("jhon"); list.add("neron"); System.out.println("list:"+ list); Ordering<String> naturalOrdering = Ordering.natural(); Ordering<Object> usingToStringOrdering = Ordering.usingToString(); Ordering<Object> arbitraryOrdering = Ordering.arbitrary(); System.out.println("naturalOrdering:"+ naturalOrdering.sortedCopy(list)); System.out.println("usingToStringOrdering:"+ usingToStringOrdering.sortedCopy(list)); System.out.println("arbitraryOrdering:"+ arbitraryOrdering.sortedCopy(list)); } }
[code]list:[peida, jerry, harry, eva, jhon, neron] naturalOrdering:[eva, harry, jerry, jhon, neron, peida] usingToStringOrdering:[eva, harry, jerry, jhon, neron, peida] arbitraryOrdering:[neron, harry, eva, jerry, peida, jhon]
reverse(): 現在の Ordering の逆の順序を返します。
nullsFirst(): null 以外の要素の前に null を配置する Ordering を返し、残りは元の Ordering と同じです。
nullsLast() : null 以外の要素の後に null を配置する Ordering を返し、残りは元の Ordering と同じです
Compound(Comparator): Comparator を 2 番目の並べ替え要素として使用して、並べ替えなどの Ordering を返します。バグリスト、最初にバグのレベルに従って並べ替え、次に優先度に従って並べ替えます。
lexicographical(): 辞書要素によって反復された順序を返します。
onResultOf(Function): 関数を各要素に適用した後、ソートのための元の順序;
greatestOf(Iterable iterable, int k): 指定された k 番目の反復可能要素の最大の要素を最大から最小の順序で返します。不安定です。
leastOf(Iterable iterable,int k): 指定された k 番目の反復可能要素の最小の要素を最小から最大の順に返します。不安定です。
isOrdered(Iterable): 順序付けされているかどうかに関係なく、Iterable を 2 要素未満にすることはできません。
isStrictlyOrdered(Iterable): 厳密に順序付けされているかどうか。 Iterable には 2 つ未満の要素を含めることはできないことに注意してください。
sortedCopy(Iterable): 指定された要素をリストのソートされたコピーとして返します。
[code]import java.util.List; import org.junit.Test; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.google.common.collect.Ordering; public class OrderingTest { @Test public void testOrdering(){ List<String> list = Lists.newArrayList(); list.add("peida"); list.add("jerry"); list.add("harry"); list.add("eva"); list.add("jhon"); list.add("neron"); System.out.println("list:"+ list); Ordering<String> naturalOrdering = Ordering.natural(); System.out.println("naturalOrdering:"+ naturalOrdering.sortedCopy(list)); List<Integer> listReduce= Lists.newArrayList(); for(int i=9;i>0;i--){ listReduce.add(i); } List<Integer> listtest= Lists.newArrayList(); listtest.add(1); listtest.add(1); listtest.add(1); listtest.add(2); Ordering<Integer> naturalIntReduceOrdering = Ordering.natural(); System.out.println("listtest:"+ listtest); System.out.println(naturalIntReduceOrdering.isOrdered(listtest)); System.out.println(naturalIntReduceOrdering.isStrictlyOrdered(listtest)); System.out.println("naturalIntReduceOrdering:"+ naturalIntReduceOrdering.sortedCopy(listReduce)); System.out.println("listReduce:"+ listReduce); System.out.println(naturalIntReduceOrdering.isOrdered(naturalIntReduceOrdering.sortedCopy(listReduce))); System.out.println(naturalIntReduceOrdering.isStrictlyOrdered(naturalIntReduceOrdering.sortedCopy(listReduce))); Ordering<String> natural = Ordering.natural(); List<String> abc = ImmutableList.of("a", "b", "c"); System.out.println(natural.isOrdered(abc)); System.out.println(natural.isStrictlyOrdered(abc)); System.out.println("isOrdered reverse :"+ natural.reverse().isOrdered(abc)); List<String> cba = ImmutableList.of("c", "b", "a"); System.out.println(natural.isOrdered(cba)); System.out.println(natural.isStrictlyOrdered(cba)); System.out.println(cba = natural.sortedCopy(cba)); System.out.println("max:"+natural.max(cba)); System.out.println("min:"+natural.min(cba)); System.out.println("leastOf:"+natural.leastOf(cba, 2)); System.out.println("naturalOrdering:"+ naturalOrdering.sortedCopy(list)); System.out.println("leastOf list:"+naturalOrdering.leastOf(list, 3)); System.out.println("greatestOf:"+naturalOrdering.greatestOf(list, 3)); System.out.println("reverse list :"+ naturalOrdering.reverse().sortedCopy(list)); System.out.println("isOrdered list :"+ naturalOrdering.isOrdered(list)); System.out.println("isOrdered list :"+ naturalOrdering.reverse().isOrdered(list)); list.add(null); System.out.println(" add null list:"+list); System.out.println("nullsFirst list :"+ naturalOrdering.nullsFirst().sortedCopy(list)); System.out.println("nullsLast list :"+ naturalOrdering.nullsLast().sortedCopy(list)); } } //============输出============== list:[peida, jerry, harry, eva, jhon, neron] naturalOrdering:[eva, harry, jerry, jhon, neron, peida] listtest:[1, 1, 1, 2] true false naturalIntReduceOrdering:[1, 2, 3, 4, 5, 6, 7, 8, 9] listReduce:[9, 8, 7, 6, 5, 4, 3, 2, 1] true true true true isOrdered reverse :false false false [a, b, c] max:c min:a leastOf:[a, b] naturalOrdering:[eva, harry, jerry, jhon, neron, peida] leastOf list:[eva, harry, jerry] greatestOf:[peida, neron, jhon] reverse list :[peida, neron, jhon, jerry, harry, eva] isOrdered list :false isOrdered list :false add null list:[peida, jerry, harry, eva, jhon, neron, null] nullsFirst list :[null, eva, harry, jerry, jhon, neron, peida] nullsLast list :[eva, harry, jerry, jhon, neron, peida, null]
上記は Java-Class Library-Guava-Ordering Comparator の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) をご覧ください。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于结构化数据处理开源库SPL的相关问题,下面就一起来看一下java下理想的结构化数据处理类库,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于PriorityQueue优先级队列的相关知识,Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于java锁的相关问题,包括了独占锁、悲观锁、乐观锁、共享锁等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于多线程的相关问题,包括了线程安装、线程加锁与线程不安全的原因、线程安全的标准类等等内容,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于枚举的相关问题,包括了枚举的基本操作、集合类对枚举的支持等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Java的相关知识,其中主要介绍了关于关键字中this和super的相关问题,以及他们的一些区别,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于平衡二叉树(AVL树)的相关知识,AVL树本质上是带了平衡功能的二叉查找树,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Java的相关知识,其中主要整理了Stream流的概念和使用的相关问题,包括了Stream流的概念、Stream流的获取、Stream流的常用方法等等内容,下面一起来看一下,希望对大家有帮助。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

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

Dreamweaver Mac版
ビジュアル Web 開発ツール

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

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ホットトピック



