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

Java List 按指定條件排序的幾種方式

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

??在 Java 項目中,可能會遇到給出一些條件,將 List 元素按照給定條件進(jìn)行排序的情況。如下述場景。

一、排序場景

??List 保存著一組亂序排列的字符串,Map 中保存著該組字符串各自的優(yōu)先級。優(yōu)先級數(shù)字從低到高表示優(yōu)先級依次遞減。要求將 List 中的字符串,按照優(yōu)先級從高到低排序。

二、指定條件排序

??實現(xiàn) List 排序有多種方法,本文總結(jié)以下幾種。文章來源地址http://www.zghlxwxcb.cn/news/detail-543612.html

2.1 調(diào)用 list sort 方法,實現(xiàn)比較器接口進(jìn)行排序
package com.example.demo.help;

import java.util.*;

public class ListSortTest {
    public static void main(String[] args) {

        List<String> rules = new ArrayList<>();
        rules.add("30003");
        rules.add("20002");
        rules.add("10001");
        rules.add("40004");
        rules.add("60006");
        rules.add("50005");

        Map<String, Integer> ruleUpper = new HashMap<>();
        ruleUpper.put("10001", 1);
        ruleUpper.put("20002", 2);
        ruleUpper.put("30003", 3);
        ruleUpper.put("40004", 4);

        rules.sort(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return ruleUpper.getOrDefault(o1, Integer.MAX_VALUE) - ruleUpper.getOrDefault(o2, Integer.MAX_VALUE);
            }
        });
        System.out.println(rules);
        // [10001, 20002, 30003, 40004, 60006, 50005]
    }
}

2.2 調(diào)用 list sort 方法,通過 lambda 表達(dá)式實現(xiàn)排序
package com.example.demo.help;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ListSortTest {
    public static void main(String[] args) {

        List<String> rules = new ArrayList<>();
        rules.add("30003");
        rules.add("20002");
        rules.add("10001");
        rules.add("40004");
        rules.add("60006");
        rules.add("50005");

        Map<String, Integer> ruleUpper = new HashMap<>();
        ruleUpper.put("10001", 1);
        ruleUpper.put("20002", 2);
        ruleUpper.put("30003", 3);
        ruleUpper.put("40004", 4);

        rules.sort((o1, o2) -> (ruleUpper.getOrDefault(o1, Integer.MAX_VALUE) - ruleUpper.getOrDefault(o2, Integer.MAX_VALUE)));
        System.out.println(rules);
        // [10001, 20002, 30003, 40004, 60006, 50005]
    }
}

2.3 通過 Collections sort 方法,實現(xiàn)比較器接口進(jìn)行排序
package com.example.demo.help;

import java.util.*;

public class ListSortTest {
    public static void main(String[] args) {

        List<String> rules = new ArrayList<>();
        rules.add("30003");
        rules.add("20002");
        rules.add("10001");
        rules.add("40004");
        rules.add("60006");
        rules.add("50005");

        Map<String, Integer> ruleUpper = new HashMap<>();
        ruleUpper.put("10001", 1);
        ruleUpper.put("20002", 2);
        ruleUpper.put("30003", 3);
        ruleUpper.put("40004", 4);

        Collections.sort(rules, new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return ruleUpper.getOrDefault(o1, Integer.MAX_VALUE) - ruleUpper.getOrDefault(o2, Integer.MAX_VALUE);
            }
        });
        System.out.println(rules);
        // [10001, 20002, 30003, 40004, 60006, 50005]
    }
}

到了這里,關(guān)于Java List 按指定條件排序的幾種方式的文章就介紹完了。如果您還想了解更多內(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)文章

  • java通用實現(xiàn)List<自定義對象>中指定字段和指定排序方式

    java通用實現(xiàn)List<自定義對象>中指定字段和指定排序方式

    Person類: 工具類: 結(jié)果:

    2024年02月04日
    瀏覽(26)
  • Java List中通過對象屬性排序,可實現(xiàn)多條件排序
  • 【Java】Java合并兩個List后并去掉重復(fù)項的幾種做法

    工作中很多時候需要用到合并兩個List并去除其中的重復(fù)內(nèi)容,這是一個很簡單的操作,實現(xiàn)的方法也多種多樣。 下面以具體實例展示給大家~ 可以很清楚的看出通過Stream完成的代碼看上去更加簡潔流暢 這樣做后的list就是合并并去重后的結(jié)果

    2024年02月11日
    瀏覽(23)
  • Java合并兩個List并去掉重復(fù)項的幾種做法

    一、前言 工作中很多時候需要用到合并兩個List并去除其中的重復(fù)內(nèi)容,這是一個很簡單的操作,實現(xiàn)的方法也多種多樣,請繼續(xù)往下看 二、使用stream方式進(jìn)行去重(需要jdk1.8及以上) 可以很清楚的看出通過Stream完成的代碼看上去更加簡潔流暢? 三、使用HashSet集合的方式進(jìn)行去重

    2024年02月11日
    瀏覽(28)
  • Java創(chuàng)建對象的幾種方式

    在Java中,對象是程序中的一種基本元素,它通過類定義和創(chuàng)建。本篇教程旨在介紹Java中創(chuàng)建對象的幾種方式,包括使用new、反射、clone、反序列化等方式。 在Java中,最常用的創(chuàng)建對象方式是使用new。使用new創(chuàng)建對象的具體步驟如下: 使用new并指定

    2024年02月12日
    瀏覽(26)
  • java:解析json的幾種方式

    Java是一種流行的編程語言,它提供了很多實用的庫和工具,在處理JSON數(shù)據(jù)時也不例外。在本文中,我們將介紹Java中如何解析JSON數(shù)據(jù)。 JSON是一種輕量級的數(shù)據(jù)交換格式,它已經(jīng)成為Web應(yīng)用程序中最流行的數(shù)據(jù)格式之一。Java提供了許多庫來處理JSON數(shù)據(jù),包括Jackson、Gson和JS

    2024年02月03日
    瀏覽(18)
  • Java 終止線程的幾種方式

    所謂正常運行結(jié)束,就是程序正常運行結(jié)束,線程自動結(jié)束。 一般run()方法執(zhí)行完,線程就會正常結(jié)束,然而,常常有些線程是伺服線程。他們需要長時間的運行,只有在外部某些條件滿足的情況下,才能關(guān)閉這些線程。使用一個變量來控制循環(huán),例如:最直接的方法就是設(shè)

    2024年02月07日
    瀏覽(22)
  • Java讀取文件的幾種方式

    1. 使用流讀取文件 2. 使用JDK1.7提供的NIO讀取文件(適用于小文件) 3. 使用JDK1.7提供的NIO讀取文件(適用于大文件) 4. 使用JDK1.4提供的NIO讀取文件(適用于超大文件) 5. 使用cmmons-io依賴提供的FileUtils工具類讀取文件 添加依賴: 6. 使用cmmons-io依賴提供的IOtils工具類讀取文件 添加依賴:

    2024年02月16日
    瀏覽(27)
  • java 讀取文件的幾種方式

    在 Java 中有幾種常用的方式來讀取文件: 使用 FileInputStream 類以字節(jié)的方式讀取文件。 使用 BufferedReader 在字符輸入流上包裝一個緩沖區(qū),以行為單位讀取文件。 使用 Scanner 類以分隔符為標(biāo)志讀取文件。 使用 Files 類的 readAllLines 方法一次性讀取所有行。 使用 ObjectInputStream 反

    2024年02月14日
    瀏覽(20)
  • Java實現(xiàn)異步的幾種方式

    Java實現(xiàn)異步的幾種方式

    普通線程實現(xiàn)異步,但頻繁創(chuàng)建、銷毀線程比較耗資源,所以一般交給線程池執(zhí)行 結(jié)果: Future異步 和普通線程實現(xiàn)異步區(qū)別不大,只是使用Future是要獲取執(zhí)行后的返回值 結(jié)果: Spring的@Async異步 使用@Async注解實現(xiàn)異步的前提是需要在啟動類上標(biāo)注@EnableAsync來開啟異步配置

    2024年02月04日
    瀏覽(39)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包