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

二維數(shù)組多次排序 或 嵌套list多次排序

這篇具有很好參考價(jià)值的文章主要介紹了二維數(shù)組多次排序 或 嵌套list多次排序。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

可以排序int[ ][ ]的順序,也可以排序List<List<Integer>> 順序

為便于理解,以力扣原題為例:1333.餐廳過(guò)濾器

原題中給了一個(gè)雙重?cái)?shù)組,并要求返回一個(gè)List<Integer>。

方法1
會(huì)用流的,通常用于會(huì)反應(yīng)把雙重?cái)?shù)組轉(zhuǎn)成List<List<Integer>>去處理這個(gè)雙重?cái)?shù)組,于是解題思路如下:

public static List<Integer> filterRestaurants2(int[][] restaurants, int veganFriendly, int maxPrice, int maxDistance) {
	//構(gòu)造嵌套List
    List<List<Integer>> lists = new ArrayList<>();
    for(int[] arr : restaurants){
        if((veganFriendly == 1 && arr[2] != 1) || maxPrice < arr[3] || maxDistance < arr[4]){
            continue;
        }

        lists.add(Arrays.stream(arr).boxed().collect(Collectors.toList()));
    }
    
    if (lists.size() == 0) {
        return new ArrayList<>();
    }

	//嵌套List排序
    lists.sort((a,b) ->{
        int rating = b.get(1).compareTo(a.get(1));
        if (rating != 0) {
            return rating;
        }
        return b.get(0).compareTo(a.get(0));
    });

    return lists.stream().map(o->o.get(0)).collect(Collectors.toList());
}

可是該方式耗空間較大,于是又會(huì)想,能不能從直接用數(shù)組的方式,不另外構(gòu)造新對(duì)象。

方法2:

public static List<Integer> filterRestaurants3(int[][] restaurants, int veganFriendly, int maxPrice, int maxDistance) {

    for(int[] arr : restaurants){
        if((veganFriendly == 1 && arr[2] != 1) || maxPrice < arr[3] || maxDistance < arr[4]){
            arr[0] = 0;
        }
    }

	//雙重?cái)?shù)組排序
    Arrays.sort(restaurants, (o1, o2) -> {
        int compare = Integer.compare(o2[1], o1[1]);
        if (compare != 0){
            return compare;
        }
        return Integer.compare(o2[0], o1[0]);
    });

    return Arrays.stream(restaurants).map((int[] o)->o[0]).filter(o->o!=0).collect(Collectors.toList());
}

但是提交的結(jié)果然后是耗時(shí)耗空間。
既然數(shù)組能用流處理,那是不是可以全部用流的形式過(guò)濾和排序呢
方法3:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-726752.html

public static List<Integer> filterRestaurants(int[][] restaurants, int veganFriendly, int maxPrice, int maxDistance) {
    return Arrays.stream(restaurants)
    .filter(r -> (veganFriendly != 1 || r[2] == 1) && r[3] <= maxPrice && r[4] <= maxDistance)
    //雙重?cái)?shù)組排序
    .sorted((a1, a2) -> a1[1] == a2[1] ? a2[0] - a1[0] : a2[1] - a1[1])
    .map(a -> a[0])
    .collect(Collectors.toList());
}

到了這里,關(guān)于二維數(shù)組多次排序 或 嵌套list多次排序的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • java的list數(shù)組按數(shù)組中對(duì)象的某個(gè)屬性排序

    在 Java 中,可以使用 Collections.sort() 方法和 Comparator 接口來(lái)對(duì) List 中的對(duì)象按照對(duì)象的某個(gè)屬性進(jìn)行排序。以下是一個(gè)示例代碼: 假設(shè)有一個(gè) Person 類(lèi),它包含一個(gè) name 字符串屬性和一個(gè) age 整數(shù)屬性,我們可以通過(guò)對(duì) ListPerson 類(lèi)型的列表進(jìn)行排序,按照 Person 對(duì)象的 age 屬性

    2024年02月04日
    瀏覽(27)
  • 【Java基礎(chǔ)教程】(八)面向?qū)ο笃?· 第二講:Java 數(shù)組全面解析——?jiǎng)討B(tài)與靜態(tài)初始化、二維數(shù)組、方法參數(shù)傳遞、排序與轉(zhuǎn)置、對(duì)象數(shù)組、操作API~

    【Java基礎(chǔ)教程】(八)面向?qū)ο笃?· 第二講:Java 數(shù)組全面解析——?jiǎng)討B(tài)與靜態(tài)初始化、二維數(shù)組、方法參數(shù)傳遞、排序與轉(zhuǎn)置、對(duì)象數(shù)組、操作API~

    掌握數(shù)組的動(dòng)態(tài)及靜態(tài)創(chuàng)建方式、使用及特征; 掌握引用類(lèi)型數(shù)據(jù)的特征; 掌握數(shù)組的排序、轉(zhuǎn)置操作; 數(shù)組可以將多個(gè)變量進(jìn)行統(tǒng)一的命名,這樣相同類(lèi)型的元素就可以按照一定的順序進(jìn)行組合排列 。在 Java中,數(shù)組屬于引用類(lèi)型數(shù)據(jù),所以在數(shù)組的操作過(guò)程中,也一定

    2024年02月13日
    瀏覽(31)
  • FreeMarker系列--list的用法(長(zhǎng)度,遍歷,下標(biāo),嵌套,排序)

    原文網(wǎng)址:FreeMarker系列--list的用法(長(zhǎng)度,遍歷,下標(biāo),嵌套,排序)_IT利刃出鞘的博客-CSDN博客 本文介紹FreeMarker的list的用法。 Java Freemaker _index是list的一個(gè)屬性 嵌套時(shí)前面要有括號(hào),如下,將字符串變成list,然后取第i個(gè)元素的值 嵌套時(shí)前面要有括號(hào),如下,將字符串變成li

    2024年02月12日
    瀏覽(18)
  • Java | 數(shù)組排序算法

    Java | 數(shù)組排序算法

    冒泡排序的基本思想是對(duì)比相鄰的元素值,如果滿足條件就交換元素值,把較小的元素移到數(shù)組前面,把較大的元素移到數(shù)組后面(也就是交換兩個(gè)元素的位置),這樣較小的元素就像氣泡一樣從底部升到頂部。 直接選擇排序的基本思想是將指定排序位置與其他數(shù)組元素分別

    2024年02月15日
    瀏覽(25)
  • Java 數(shù)組常見(jiàn)的排序和查找算法

    2、數(shù)組 2.1、常見(jiàn)的算法: 排序算法: 冒泡排序算法 選擇排序算法 2.2、算法實(shí)際上在 java 中已經(jīng)封裝好了。 排序可以調(diào)用方法。例如:java 中提供了一個(gè)數(shù)組工具類(lèi): java.util.Arrays Arrays 是一個(gè)工具類(lèi)。 其中有一個(gè) sort() 方法,可以排序。靜態(tài)方法,直接使用類(lèi)名調(diào)用就行。

    2024年01月17日
    瀏覽(26)
  • 【經(jīng)典算法】 leetcode88.合并排序的數(shù)組(Java/C/Python3實(shí)現(xiàn)含注釋說(shuō)明,Easy)

    作者主頁(yè): ??進(jìn)朱者赤的博客 精選專(zhuān)欄:??經(jīng)典算法 作者簡(jiǎn)介:阿里非典型程序員一枚 ,記錄在大廠的打怪升級(jí)之路。 一起學(xué)習(xí)Java、大數(shù)據(jù)、數(shù)據(jù)結(jié)構(gòu)算法( 公眾號(hào)同名 ) ??覺(jué)得文章還不錯(cuò)的話歡迎大家點(diǎn)贊???收藏???評(píng)論,??支持博主,記得點(diǎn)個(gè)大大的 關(guān)

    2024年04月22日
    瀏覽(21)
  • 【第43天】sort 的復(fù)雜運(yùn)用 | 對(duì)二維數(shù)組與結(jié)構(gòu)體實(shí)現(xiàn)自定義排序

    本文已收錄于專(zhuān)欄 ??《Java入門(mén)一百練》??

    2024年01月17日
    瀏覽(27)
  • 二維list的使用(java)

    二維list的使用(java)

    想必大家對(duì)int[ ] [ ]這樣的二維數(shù)組的初始化,賦值,遍歷已經(jīng)很熟悉了,但java中的二維list就很少能接觸到。但遇到了也不慌,接下來(lái)就對(duì)二維的list深入使用。 先導(dǎo)入java.util.ArrayList和java.util.List這兩個(gè)包 (這里使用Integer類(lèi)型做示范,String類(lèi)型也可,其它類(lèi)型有些適用) 這

    2024年02月09日
    瀏覽(13)
  • 【算法】激光炸彈(二維數(shù)組前綴和)

    地圖上有?N?個(gè)目標(biāo),用整數(shù)?Xi,Yi 表示目標(biāo)在地圖上的位置,每個(gè)目標(biāo)都有一個(gè)價(jià)值?Wi。 注意 :不同目標(biāo)可能在同一位置。 現(xiàn)在有一種新型的激光炸彈,可以摧毀一個(gè)包含?R×R 個(gè)位置的正方形內(nèi)的所有目標(biāo)。 激光炸彈的投放是通過(guò)衛(wèi)星定位的,但其有一個(gè)缺點(diǎn),就是其爆

    2024年01月25日
    瀏覽(22)
  • JAVA——二維數(shù)組遍歷二維數(shù)組的三種方法

    JAVA——二維數(shù)組遍歷二維數(shù)組的三種方法

    目錄 ??java中二維數(shù)組的定義和賦值 ??二維數(shù)組遍歷的三種方法 ??第一種:for循環(huán)遍歷 ??第二種方法:通過(guò)Arrays.deepToString()遍歷 ??第三種方法:通過(guò)for(? ?:? ?)遍歷 二維數(shù)組其實(shí)就是特殊的一維數(shù)組; 在java中將這句話詮釋得淋漓盡致; 運(yùn)行截圖: 運(yùn)行截圖: 注意

    2024年02月08日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包