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

Java lamda對List<JSONObject>里多個動態(tài)屬性字段進(jìn)行動態(tài)的降序或者升序

這篇具有很好參考價值的文章主要介紹了Java lamda對List<JSONObject>里多個動態(tài)屬性字段進(jìn)行動態(tài)的降序或者升序。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

? ? ? ? 最近做到一個需求,需要把業(yè)務(wù)側(cè)返回的數(shù)據(jù)(格式為List<JSONObject>),然后根據(jù)前端傳來的排序字段、以及升降序?qū)傩詠砼判虿⒎祷亟o前端。要對List<JSONObject>中的多個屬性字段進(jìn)行動態(tài)的升序或降序排序,我們可以根據(jù)需要使用Comparator.comparing()方法和Comparator.reverseOrder()方法,運用lambda表達(dá)式動態(tài)指定屬性字段和排序順序。以下是自己寫的一個示例代碼,演示了如何實現(xiàn)動態(tài)的降序和升序排序,僅供參考。?? ??

public static void main(String[] args) {
        List<JSONObject> jsonList = new ArrayList<>();

        // 添加JSONObject對象到List中
        JSONObject json1 = new JSONObject();
        json1.put("id", 1);
        json1.put("name", "Alice");
        json1.put("age", 25);

        JSONObject json2 = new JSONObject();
        json2.put("id", 2);
        json2.put("name", "Alice");
        json2.put("age", 30);

        JSONObject json3 = new JSONObject();
        json3.put("id", 3);
        json3.put("name", "Bob");
        json3.put("age", 20);

        jsonList.add(json1);
        jsonList.add(json2);
        jsonList.add(json3);

        List<String> sortProperties = new ArrayList<>();
        //動態(tài)指定要排序的屬性字段
        //此處可以根據(jù)業(yè)務(wù)需要傳具體字段,此處測試就先寫死
        sortProperties.add("name");
        sortProperties.add("age");

        Map<String,Boolean> sortOrders = new HashMap<>();
        //動態(tài)指定屬性字段對應(yīng)的排序順序(true表示降序,false表示升序)
        //此處可以根據(jù)業(yè)務(wù)傳具體字段的具體排序方式,此處測試就先寫死
        sortOrders.put("name",false);
        sortOrders.put("age",true);

        // 構(gòu)建Comparator鏈
        Comparator<JSONObject> comparator = null;
        for (int i = 0; i < sortProperties.size(); i++) {
            final int propertyIndex = i;
            Comparator<JSONObject> propertyComparator = Comparator.comparing(
                    (JSONObject o) -> o.getString(sortProperties.get(propertyIndex)),
                    String.CASE_INSENSITIVE_ORDER
            );

            if (sortOrders.get(sortProperties.get(propertyIndex))) {
                propertyComparator = propertyComparator.reversed();
            }

            if (comparator == null) {
                comparator = propertyComparator;
            } else {
                comparator = comparator.thenComparing(propertyComparator);
            }
        }
        Collections.sort(jsonList, comparator);
        // 輸出排序后的結(jié)果
        for (JSONObject json : jsonList) {
            System.out.println(json.toString());
        }
    }

按名字升序,按年齡降序

輸出結(jié)果:

{"name":"Alice","id":2,"age":30}
{"name":"Alice","id":1,"age":25}
{"name":"Bob","id":3,"age":20}

在上述代碼中,首先創(chuàng)建了一個包含多個JSONObject對象的List。然后,使用sortProperties來動態(tài)指定要排序的屬性字段,使用sortOrders來動態(tài)指定屬性字段對應(yīng)的排序順序。

在使用for循環(huán)遍歷sortProperties列表中的屬性字段,并根據(jù)屬性字段在列表中的索引創(chuàng)建一個新的Comparator。在Lambda表達(dá)式中,通過o.get(sortProperties.get(propertyIndex))來獲取屬性字段的值。根據(jù)sortOrders列表中的值,如果需要降序排序則使用.reversed()方法進(jìn)行反轉(zhuǎn)。

通過循環(huán)構(gòu)建的多個Comparator通過thenComparing方法鏈將它們連接在一起,生成一個能夠?qū)崿F(xiàn)多個屬性字段動態(tài)排序的Comparator。

注意:上述代碼中假設(shè)屬性字段具有相同的類型。如果屬性字段有不同的數(shù)據(jù)類型,可能需要使用適當(dāng)?shù)谋容^器來提取和比較屬性字段的值,即要注意從jsonObject中取對應(yīng)值的時候,是使用getString()還是getInteger()等其它方法。文章來源地址http://www.zghlxwxcb.cn/news/detail-609956.html

到了這里,關(guān)于Java lamda對List<JSONObject>里多個動態(tài)屬性字段進(jìn)行動態(tài)的降序或者升序的文章就介紹完了。如果您還想了解更多內(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中List對象集合按照對象中某字段進(jìn)行排序

    在Java中,可以使用List集合對象的sort(Comparator? super E c)方法,按照對象中某字段對List集合進(jìn)行排序 栗子: 打印輸出結(jié)果如下:

    2024年02月12日
    瀏覽(20)
  • java List<對象> 根據(jù)對象的一個屬性進(jìn)行去重

    1.實現(xiàn)一個自定義函數(shù),該函數(shù)將用于確定兩個對象是否相等,例如: 這個函數(shù)接受一個Function對象作為參數(shù),該函數(shù)將從對象中提取唯一標(biāo)識屬性,并使用ConcurrentHashMap來確定是否已經(jīng)處理過該屬性值。? ?2.現(xiàn)在你可以使用這個函數(shù)來進(jìn)行去重了,例如: ?這個代碼將對m

    2024年02月12日
    瀏覽(18)
  • Java當(dāng)中List集合根據(jù)對象某個屬性進(jìn)行去重

    Java當(dāng)中List集合根據(jù)對象某個屬性進(jìn)行去重

    關(guān)于以下方法,直接可以在自己項目創(chuàng)建一個類,然后進(jìn)行測試使用,去重方式有很多種,文本末尾也提供了每個方法的運行結(jié)果,供大家參考使用! 文章大量使用到了Java8當(dāng)中的Lambda表達(dá)式,以及stream流相關(guān)基礎(chǔ)知識。如果您用的不熟,沒關(guān)系,可以直接復(fù)制下面的方案然

    2024年02月16日
    瀏覽(95)
  • Java8 List<Object> 轉(zhuǎn)成 List<JSONObject>

    ?? Java8 List<Object> 轉(zhuǎn)成 List<Map<String, Object>>

    2024年02月16日
    瀏覽(17)
  • Java-json相關(guān)轉(zhuǎn)換,JSONObject與實體類/map互轉(zhuǎn)、List/List<map>和JSONArray互轉(zhuǎn)、獲取JSONObject中的key value、字符串String轉(zhuǎn)換等

    博客背景是Java開發(fā)。json相關(guān)的轉(zhuǎn)換、取值等在日常開發(fā)中經(jīng)常使用,但有時候還是會忘記or遇到些奇奇怪怪的問題。以此記錄,提醒自己~不定期更新~ 實體類和JSONObject互轉(zhuǎn) Map和JSONObject互轉(zhuǎn) String轉(zhuǎn)JSONObject 實體類轉(zhuǎn)JSON字符串時不過濾NULL空值 獲取JSONObject中的key value List和

    2024年02月12日
    瀏覽(29)
  • Java中通過List中的stream流去匹配相同的字段去賦值,避免for循環(huán)去查詢數(shù)據(jù)庫進(jìn)行賦值操作

    Q :上面兩個列表怎么使用流,根據(jù)equipmentDeviceMessageInfo中的phone字段去匹配userList 中的phone字段再獲取userList 中是name賦值給equipmentDeviceMessageInfo 中的name。 A :以前的寫法是通過for循環(huán)遍歷一個一個去查詢賦值,這樣的話如果數(shù)據(jù)多的話一個一個遍歷會查詢的話肯定是很慢的,

    2024年02月07日
    瀏覽(25)
  • <List<Map<String,Object>>>Map中多個屬性轉(zhuǎn)成List Map

    舉例: 原始數(shù)據(jù) :{001=張三, 002=李四, 003=王五, 004=趙六} 目標(biāo)數(shù)據(jù) : {value=張三, key=001} {value=李四, key=002} {value=王五, key=003} {value=趙六, key=004} 輸出: 單獨封裝工具類案例:

    2024年02月11日
    瀏覽(43)
  • Coalesce:處理Null值,返回傳入的多個字段(屬性)中第一個非空的值

    Coalesce函數(shù)是SQL中的一個函數(shù),用于返回參數(shù)列表中第一個非空的表達(dá)式的值。Coalesce函數(shù)接受兩個或多個參數(shù),它會按順序依次檢查每個參數(shù),返回第一個非空的參數(shù)值。如果所有參數(shù)都為空,則返回NULL。 Coalesce函數(shù)可以用于在SQL中處理空值的情況。在實際的數(shù)據(jù)處理中,

    2024年02月09日
    瀏覽(36)
  • jsonobject轉(zhuǎn)list(jsonobject轉(zhuǎn)list集合)

    您好,這個應(yīng)該是可以的! ??get(“two”); System。out。println(“two = ” + n); 由于作為key的對象將通過計算其散列函數(shù)來確定與之對應(yīng)的value的位置,因此任何作為key的對象都必須實現(xiàn)hashCode和equals方法。hashCode和equals方法繼承自根類Object,如果你用自定義的類當(dāng)作key的話,要相

    2023年04月08日
    瀏覽(18)
  • 【MySQL】根據(jù)多個字段查詢數(shù)據(jù)進(jìn)行去重的sql編寫

    一、實現(xiàn)思路 根據(jù)四個字段進(jìn)行數(shù)據(jù)去重的SQL編寫可以使用GROUP BY和HAVING子句來實現(xiàn)。 場景一: 假設(shè)有一個名為 table1 的數(shù)據(jù)表,其中包含四個字段: field1 、 field2 、 field3 和 field4 。要求根據(jù)這四個字段進(jìn)行數(shù)據(jù)去重。 可以使用以下SQL語句: 場景二: 上述SQL語句會返回所

    2024年02月15日
    瀏覽(99)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包