国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

List按指定規(guī)則排序的四種方法

這篇具有很好參考價值的文章主要介紹了List按指定規(guī)則排序的四種方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

使用Collections.sort(list)可對一個List對象進(jìn)行升序排序,但如果要按某種指定規(guī)則進(jìn)行排序,可使用如下四種方法:

1. 使用list.sort(comparator)方法

List的sort()方法中可以傳入一個自定義Comparator比較器。實現(xiàn)Comparator接口,重寫compare方法來定義排序規(guī)則。

  • 如果compare()方法返回負(fù)整數(shù),表示obj1小于obj2;
  • 如果compare()方法返回零,表示obj1等于obj2;
  • 如果compare()方法返回正整數(shù),表示obj1大于obj2。
List<Integer> list = new ArrayList<>();
list.add(5);
list.add(2);
list.add(8);
// 自定義比較器,按照降序排序
Comparator<Integer> comparator = new Comparator<Integer>() {
    @Override
    public int compare(Integer o1, Integer o2) {
        return o2.compareTo(o1);
    }
};
list.sort(comparator);

可進(jìn)一步簡寫為lambda表達(dá)式,編譯器會根據(jù)參數(shù)類型重寫對應(yīng)的接口方法創(chuàng)建匿名類對象

list.sort((o1, o2) -> {
     return o2.compareTo(o1);
});
//表達(dá)式的主體只有一行代碼時可繼續(xù)簡寫
list.sort((o1, o2) -> o2.compareTo(o1));

2. 使用Collections.sort(list, comparator)方法

Collections.sort()方法可以傳入一個list和自定義Comparator比較器,根據(jù)比較器規(guī)則對list進(jìn)行排序。

Collections.sort(list, comparator);
//簡寫
Collections.sort(list, (o1, o2) -> o2.compareTo(o1));

3.集合元素實現(xiàn)Comparable接口

使List中的元素實現(xiàn)Comparable接口,重寫compareTo方法來定義元素的比較規(guī)則,然后再用Collections.sort(list)。

class Person implements Comparable<Person> {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public int compareTo(Person other) {
        // 根據(jù)年齡進(jìn)行升序排序
        return Integer.compare(this.age, other.age);
    }

    public static void main(String[] args) {
        List<Person> list = new ArrayList<>();
        list.add(new Person("Alice", 25));
        list.add(new Person("Bob", 30));
        list.add(new Person("Charlie", 20));
        Collections.sort(list);
        list.forEach(x -> System.out.println(x.name + x.age));
    }
}

4. Comparator多級比較

當(dāng)?shù)谝粋€關(guān)鍵字相等時還需要進(jìn)行后續(xù)關(guān)鍵字的繼續(xù)比較時,就可以用到Comparator接口中的靜態(tài)方法comparing和默認(rèn)方法thenComparing(),它們都接收一個函數(shù)式接口Function的實現(xiàn)對象作為參數(shù)文章來源地址http://www.zghlxwxcb.cn/news/detail-445641.html

List<List<Integer>> lineList = new ArrayList<>();
//先按照第一個關(guān)鍵字比較,相等則thenComparing第二個關(guān)鍵字
lineList.sort(Comparator.comparing((List<Integer> o) -> o.get(0)).thenComparing(o -> o.get(1)));

到了這里,關(guān)于List按指定規(guī)則排序的四種方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • List集合刪除指定元素-四種方法

    List集合刪除指定元素-四種方法

    第一種 for循環(huán) 輸出結(jié)果為 第二種 迭代器 輸出結(jié)果為 第三種 stream流 這種過濾是留下符合條件的元素 輸出結(jié)果為 第四種 removeIf 方法以及 方法引用 removeIf 方法是jdk1.8 Collection以及其子類新增的,作用是過濾指定條件的元素 輸出結(jié)果為 總結(jié) 不言而喻,第四種方法最好用。

    2024年02月09日
    瀏覽(26)
  • List移除元素的四種方式

    List移除元素的四種方式

    四種方式: 方式一,使用 Iterator ,順序向下,如果找到元素,則使用 remove 方法進(jìn)行移除。 方式二,倒序遍歷 List ,如果找到元素,則使用 remove 方法進(jìn)行移除。 方式三,正序遍歷 List ,如果找到元素,則使用 remove 方法進(jìn)行移除,然后進(jìn)行索引 “自減”。 方式四,使用

    2024年02月14日
    瀏覽(24)
  • java中數(shù)組的四種排序

    java中數(shù)組的四種排序

    1.1數(shù)組的基本概念 數(shù)組(Array)是有序的元素序列。 若將有限個類型相同的變量的集合命名,那么這個名稱為數(shù)組名。組成數(shù)組的各個變量稱為數(shù)組的分量,也稱為數(shù)組的元素,有時也稱為下標(biāo)變量/12713827)。用于區(qū)分?jǐn)?shù)組的各個元素的數(shù)字編號稱為下標(biāo)。數(shù)組是在程序設(shè)計

    2024年02月15日
    瀏覽(21)
  • 使用Collections.sort方法來對自定義對象進(jìn)行排序

    Collections.sort方法可以用來對自定義對象進(jìn)行排序。要實現(xiàn)這一點,需要在調(diào)用該方法時傳入一個比較器,該比較器用于指定如何比較對象中的值。 舉個例子,假設(shè)有一個自定義對象Person,其中包含姓名和年齡兩個屬性,我們可以使用以下代碼對該對象列表進(jìn)行按年齡排序:

    2024年02月13日
    瀏覽(25)
  • 最大公約數(shù)的四種方法

    最大公約數(shù)的四種方法

    求兩數(shù)的最大公約數(shù),一共有四種方法:暴力窮舉法、更相減損法、輾轉(zhuǎn)相除法、stein 算法,小女不才,花了幾天的時間終于把這幾種方法全部弄明白,現(xiàn)在就把它們?nèi)糠窒沓鰜怼?首先,假設(shè)被求的兩個數(shù)為 x、y,且 x y。最大公約數(shù) d = gcd (x , y) 正如名字所說,暴擊窮舉法

    2024年02月05日
    瀏覽(33)
  • 數(shù)據(jù)的四種基本存儲方法

    數(shù)據(jù)的存儲結(jié)構(gòu)可用以下四種基本存儲方法得到: ( 1 )順序存儲方法 ??? 該方法把邏輯上相鄰的結(jié)點存儲在物理位置上相鄰的存儲單元里,結(jié)點間的邏輯關(guān)系由存儲單元的鄰接關(guān)系來體現(xiàn)。 ??? 由此得到的存儲表示稱為順序存儲結(jié)構(gòu)??(Sequential Storage Structure),通常借

    2024年02月15日
    瀏覽(19)
  • 檢測數(shù)據(jù)類型的四種方法

    檢測數(shù)據(jù)類型的四種方法

    一、數(shù)據(jù)類型: 1、基本數(shù)據(jù)類型:String、Number、Boolean、Null、Undefined、Symbol 、BigInt 2、引用數(shù)據(jù)類型:Object、Array、Function、Date、RegExp 二、檢測數(shù)據(jù)類型的四種方法 1.typeof檢測 ? 特點:typeof只能檢測基本數(shù)據(jù)類型(除了null),不能準(zhǔn)確的檢測引用數(shù)據(jù)類型。 object、array、

    2024年02月15日
    瀏覽(17)
  • Hive數(shù)據(jù)導(dǎo)出的四種方法

    hive數(shù)據(jù)倉庫有多種數(shù)據(jù)導(dǎo)出方法,我在本篇文章中介紹下面的四種方法供大家參考: Insert語句導(dǎo)出、Hadoop命令導(dǎo)出、Hive shell命令導(dǎo)出、Export語句導(dǎo)出。 Hive支持將select查詢的結(jié)果導(dǎo)出成文件存放在文件系統(tǒng)中。語法格式如下; 注意: 導(dǎo)出操作是一個OVERWRITE覆蓋操作,慎重

    2024年01月17日
    瀏覽(21)
  • 有關(guān)實現(xiàn)深拷貝的四種方法

    有關(guān)實現(xiàn)深拷貝的四種方法

    ????????深拷貝與淺拷貝: ????????在開始之前我們需要先了解一下什么是淺拷貝和深拷貝,其實深拷貝和淺拷貝都是針對的引用類型,JS中的變量類型分為值類型(基本類型)和引用類型;對值類型進(jìn)行復(fù)制操作會對值進(jìn)行一份拷貝,而對引用類型賦值,則會進(jìn)行地址

    2024年02月04日
    瀏覽(16)
  • MySQL批量更新的四種方法

    MySQL批量更新的四種方法

    最近做一個需求,更新3w條數(shù)據(jù),一個一個update去更新的,結(jié)果花了80分鐘,這樣性能上很差,也容易阻塞,所以就找了一些MySQL批量更新的方式,在此記錄一下 這種更新會將其它字段更新為默認(rèn)值,因為它是先將重復(fù)記錄刪掉再更新,謹(jǐn)慎使用 1 2 replace into ` user ` (id,age) va

    2024年02月16日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包