Comprator.com mparing並べ替えピット

6046 ワード

ほぼ先生の個人空間java本文
java 8 streamマルチフィールドの並べ替えxiaomin 0322は2019/11/02 11:38文字数1012を読みます。200を読みます。コレクション3点を読みます。コメント0 Java注:転載してください。出所を明記してください。
多くの場合sqlが解決しにくいマルチテーブルクエリ、臨時テーブルグループ、ソート、できるだけjava 8の新特性streamで処理します。
java 8の新しい特性を使って、次にまず基礎のをつけます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
リストリストリスト某集合を代表する
//オブジェクトのセットに戻り、クラスの属性を昇順に並べ替えます。
list.stream().sorted(Comprator.com mparing(類:属性一);
//対象の集合に戻ります。クラスの属性を降順に並べ替えます。2つの書き方に注意してください。
list.stream().sorted(Comprator.com mparing(類:属性一).reversed()//属性を昇順して、属性を降順します。
list.stream().sorted(Comprator.com mparing(クラス:属性一、Comprator.reverseOrder);//属性を降順にする
//対象セットに戻り、クラス属性1昇順属性2昇順
list.stream().sorted(Comprator.com mparing(類:属性一).then Compparing(類:属性二);
//対象の集合に戻ります。クラス属性の降順属性の二昇順で、二つの書き方に注意してください。
list.stream().sorted(Comprator.com mparing(クラス:属性一).reversed().then Compparing(クラス:属性二))//属性を昇順し、昇順結果を属性の降順とし、属性二昇順を行います。
list.stream().sorted(Comprator.com mparing(クラス:属性一、Comprator.reverseOrder).then Compparing(クラス:属性二)//属性を降順にして、属性二昇順を行います。
//対象の集合に戻り、クラス属性の降順属性の二降順に注意する。
list.stream().sorted(Comprator.com mparing(クラス:属性一).reversed().thenCompparing(クラス:プロパティ二、Comprator.reverseOrder)///属性を昇順し、昇順結果を属性の降順とし、属性二降順を行います。
str.stream().sorted(Comprator.com mparing(クラス:プロパティ1,Comprator.reverseOrder).then Compparing(クラス:プロパティ2,Comprator.reverseOrder)//////属性を降順にして、属性二降順を行います。
//対象の集合に戻ります。クラス属性1昇順属性2降順で、2つの書き方に注意してください。
list.stream().sorted(Comprator.com mparing(クラス:属性一).reversed().thenCompparing(クラス:属性二).reversed()//属性を昇順し、昇順の結果を属性の降順とし、属性の二昇順を行い、結果として属性の降順として属性の二降順を行います。
str.stream().sorted(Comprator.com mparing(クラス:属性一).thenCompparing(クラス:プロパティ二、Comprator.reverseOrder)//属性を昇順して、属性二降順を行います。
上記の例を通して私達は発見することができます。
  • Comprator.com mparing(クラス:属性一).reversed();
  • Comprator.com mparing(クラス:属性一、Comprator.reverseOrder();
  • 2つの並べ替えは全く違っています。1は並べ替えの結果を得てから並べ替えます。2は直接並べ替えます。多くの人が混同して間違えたということです。2はよく分かります。2は使ってください。
    実際の例:
    既存のクラスのtestは二つの属性があります。state状態time時間は、状態順序と時間順序が必要です。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    class test{
    //  
    
    private int state;
    
    //  
    
    private Date time;
    
    
    
    public test(int state, Date time) {
    
        this.state = state;
    
        this.time = time;
    
    }
    
    
    
    public int getState() {
    
        return state;
    
    }
    
    
    
    public void setState(int state) {
    
        this.state = state;
    
    }
    
    
    
    public Date getTime() {
    
        return time;
    
    }
    
    
    
    public void setTime(Date time) {
    
        this.time = time;
    
    }
    
    
    
    @Override
    
    public String toString() {
    
        return "test{" +
    
                "state=" + state +
    
                ", time=" + DateUtils.formatDateYMD(time) +
    
                '}';
    
    }
    
    )
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    class testRun{
    public static void main(String[] args) {
    
        List testList = new ArrayList<>();
    
        Date d = DateUtils.now();
    
        for (int i = 1; i <= 3; i++) {
    
            test t = new test(i, DateUtils.addDays(d, i));
    
            testList.add(t);
    
        }
    
        for (int i = 1; i <= 3; i++) {
    
            test t = new test(i, DateUtils.addMonths(d, i));
    
            testList.add(t);
    
        }
    
    
    
        testList.forEach(o -> {
    
            System.out.println(o.toString());
    
        });
    
        List sort = testList.stream().sorted(Comparator.comparing(test::getState).thenComparing(test::getTime,Comparator.reverseOrder())).collect(toList());
    
        System.out.println("------------------------------------");
    
        sort.forEach(o -> {
    
            System.out.println(o.toString());
    
        });
    
    
    
    
    
    }
    
    )
    実行結果:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    ソート前:
    test{state=1、time=2019-07-24}
    test{state=2,time=2019-07-25}
    test{state=3、time=2019-07-26}
    test{state=1、time=2019-08-23}
    test{state=2,time=2019-09-23}
    test{state=3、time=2019-10-23}
    並べ替え後:
    test{state=1、time=2019-08-23}
    test{state=1、time=2019-07-24}
    test{state=2,time=2019-09-23}
    test{state=2,time=2019-07-25}
    test{state=3、time=2019-10-23}
    test{state=3、time=2019-07-26}
    Process finished with exit code 0
    この記事の転載は以下の通りですhttps://www.cnblogs.com/kuanglongblogs/p/11230250.html
    印刷レポートの前のページ:Lombookで@Dataの使用ピットについて次の編:限流器とGuavaの分析を実現する-限流アルゴリズムxiaomin 0322 xiaomin 0322ファン151博文4074コードワードの総数216603作品2上海構築師の評論(0)ここであなたのこの文に対する観点0/1000のjava 8の順序付けについての実例を説明します。通常のやり方は、このようなbeanです。prvate static class Person{}/この例は、集合中の元素を年齢別に並べ替えたCollection.sort(people,new Comprator)です。
    光と熱のブログ2017/12/21 0 Java 8は何を解決しましたか?対象に向かって勉強する時、多くの人がJavaを使って例を挙げますが、Javaは純粋な対象言語ではなく、最も明白なのは、int、doubleなどの基本的なタイプが対象ではありません。java 8が出てきてから、フローを導入しました。関数式プログラミングは、更に方向ではありません。
    MageekChiu 2017/08/02 0 Java 8関数式プログラミングの巨視的総括1.java 8利点は、挙動を抽象化することにより、Java 8は、マルチコアCPU上でコードが効率的に動作するように大量処理データの並列クラスを提供しています。
    caoxiaooooooohong 1005 2018/03/18 0 Java 8-Stream APIのクイックエントリに続くJava 8-Stream APIのクイックエントリ王爵の技術ブログ2017-07-181を読むstremfilterJava 8は、簡単に式を紹介しました。Java 8は、プログラマにより良いコードを書くように手助けすることを目的としています。
    王爵の技術ブログ2017/07/18 0
    Java 8では、HashMapのValue値を順序付けるJava 8において、HashMapのValue値を順序付ける1番ゲート・プログラマの仕事をしています。プログラマの生活(java、python、delphi実戦)は、JavaがJava 8でjava.utilC.paratorとMap.Entyを新たに追加します。
    一番門-プログラマーの仕事、プログラマーの生活(java、python、delphiは実戦)2017/10/08 0 OSCINAコミュニティについては、私たちのパートナーOpen APIオンラインツールコードクラウドGree.com企業研究開発管理CopyCat-コードクローニング検査ユーティリティオンラインツールWeChat公衆番号OCHINA APP統合全ネットワーク技術記事について連絡します。あなたの読書の好みに応じて、個性的な推薦を行います。
    ©OSCINA(OSTChina.NET)工信部オープンソースソフトウェア推進連盟が指定した公式コミュニティ深圳市オースネットワーク科学技術有限公司の著作権を所有しています。