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

List<HashMap<String,String>>實(shí)現(xiàn)自定義字符串排序(key排序、Value排序)

這篇具有很好參考價(jià)值的文章主要介紹了List<HashMap<String,String>>實(shí)現(xiàn)自定義字符串排序(key排序、Value排序)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

系列文章目錄

SpringBoot+Vue3實(shí)現(xiàn)登錄驗(yàn)證碼功能
Java實(shí)現(xiàn)發(fā)送郵件(定時(shí)自動(dòng)發(fā)送郵件)
換個(gè)角度使用Redis去解決跨域存取Session問題
Redis緩存穿透、擊穿、雪崩問題及解決方法
Spring Cache的使用–快速上手篇

更多該系列文章請查看我的主頁哦



前言

??根據(jù)一些真實(shí)需求遇到的問題,需進(jìn)行排序后進(jìn)行數(shù)據(jù)的封裝展示。例如,現(xiàn)在有一個(gè)類型為List<HashMap<String,String>>的無序數(shù)據(jù),list里的各個(gè)map的key值是一樣的,但是value值是使用a,b,f,d等字母作為真實(shí)條件存儲(chǔ)的值。展示時(shí)需通過這些條件中a,b,c,d,e,f的順序去展示這些數(shù)據(jù)。在通過半個(gè)多小時(shí)的研究后,自己寫了一個(gè)自定義的排序規(guī)則。這個(gè)規(guī)則適用于List套map形式的數(shù)據(jù)進(jìn)行排序。在寫完根據(jù)value排序后,順便把根據(jù)每個(gè)key排序的情況進(jìn)行了擴(kuò)充。


一、根據(jù)Key值排序

1.1.數(shù)據(jù)準(zhǔn)備

如下代碼所示,準(zhǔn)備自定義排序規(guī)則的strlist和需要進(jìn)行排序的list2

??這里的strlist是排序規(guī)則,可以根據(jù)你想要的順序進(jìn)行排序展示(添加的順序即為展示的順序)。像這里我是key為a的排前,b,c,d,e,f的順序排序各個(gè)map。這里的list2是在列表里準(zhǔn)備了各個(gè)map的key和value值。當(dāng)然這是以key值排序,所以key是屬于自定義排序規(guī)則內(nèi)的值。

      //自定義排序規(guī)則 添加的順序(值)就是排序的順序
      ArrayList<String> strlist=new ArrayList<>();
      strlist.add("a");
      strlist.add("b");
      strlist.add("c");
      strlist.add("d");
      strlist.add("e");
      strlist.add("f");
     //根據(jù)key排序
	 ArrayList<HashMap<String, String>> list2 = new ArrayList<>();
	 HashMap<String, String> hashMap5 = new HashMap<String, String>();
	 hashMap5.put("a","這是a");
	 list2.add(hashMap5);
	 HashMap<String, String> hashMap6 = new HashMap<String, String>();
	 hashMap6.put("c","這是c");
	 list2.add(hashMap6);
	 HashMap<String, String> hashMap7 = new HashMap<String, String>();
	 hashMap7.put("f","這是f");
	 list2.add(hashMap7);
	 HashMap<String, String> hashMap8 = new HashMap<String, String>();
	 hashMap8.put("b","這是b");
	 list2.add(hashMap8);
	 HashMap<String, String> hashMap9 = new HashMap<String, String>();
	 hashMap9.put("d","這是d");
	 list2.add(hashMap9);

1.2.實(shí)現(xiàn)的方法

??實(shí)現(xiàn)需將上述準(zhǔn)備的list作為入?yún)魅朐摲椒ㄟM(jìn)行操作:首先需定義一個(gè)新的list1,用來封裝排序好的數(shù)據(jù)。然后是進(jìn)行循環(huán)(外層為自定義規(guī)則的值,內(nèi)層為排序前的數(shù)據(jù)),去循環(huán)的過程中根據(jù)自定義排序的strlist進(jìn)行依次判斷l(xiāng)ist(排序前的數(shù)據(jù))是否存在自定義的值,存在即放到新的list1中,然后將排序好的list1返回。
提示:這里的最內(nèi)層循環(huán):我的每個(gè)map都存放的一個(gè)key,value,所以直接取值判斷。如放多個(gè)值,需在最內(nèi)層中寫if判斷根據(jù)哪個(gè)值進(jìn)行對(duì)該map排序。這里在擴(kuò)展中會(huì)說。。。

public static String sortKey(List<HashMap<String,String>> list,ArrayList<String> strlist) {
        ArrayList<HashMap<String, String>> list1 = new ArrayList<>();
        String keyc="";
        for (int i = 0; i < strlist.size(); i++) {
            for (int j = 0; j < list.size(); j++) {
                HashMap<String, String> map1 = list.get(j);
                //取值
                Set<String> keys = map1.keySet();
                for (String key : keys) {
                    //根據(jù)map里的哪個(gè)值排序 加if判斷即可
                    keyc=key;
                }
                if(strlist.get(i).equals(keyc)){
                    list1.add(map1);
                }
            }
        }
        return list1.toString();
    }

1.3.效果展示

打印代碼如下:

	System.out.println("根據(jù)map的key排序前="+list2);
    String sortKey = sortKey(list2,strlist);
    System.out.println("根據(jù)map的key排序后="+sortKey);

效果圖展示如下圖所示:可看到根據(jù)key值排序前后的不同。
List<HashMap<String,String>>實(shí)現(xiàn)自定義字符串排序(key排序、Value排序),java知識(shí)點(diǎn),后端知識(shí)點(diǎn),list,數(shù)據(jù)結(jié)構(gòu),java,算法,junit

二、根據(jù)Value值排序

2.1.數(shù)據(jù)準(zhǔn)備

如下代碼所示,準(zhǔn)備自定義排序規(guī)則的strlist和需要進(jìn)行排序的list

??這里的strlist是排序規(guī)則,可以根據(jù)你想要的順序進(jìn)行排序展示(添加的順序即為展示的順序)。像這里我是value為a的排前,b,c,d,e,f的順序排序各個(gè)map。這里的list是在列表里準(zhǔn)備了各個(gè)map的key和value值。當(dāng)然這是以Value值排序,所以Value是屬于自定義排序規(guī)則內(nèi)的值。

        //自定義排序規(guī)則 添加的順序(值)就是排序的順序
        ArrayList<String> strlist=new ArrayList<>();
        strlist.add("a");
        strlist.add("b");
        strlist.add("c");
        strlist.add("d");
        strlist.add("e");
        strlist.add("f");

        //模擬數(shù)據(jù)list<HashMap<String,String>>
        ArrayList<HashMap<String, String>> list = new ArrayList<>();
        HashMap<String, String> hashMap = new HashMap<String, String>();
        hashMap.put("type","a");
        list.add(hashMap);
        HashMap<String, String> hashMap1 = new HashMap<String, String>();
        hashMap1.put("type","c");
        list.add(hashMap1);
        HashMap<String, String> hashMap3 = new HashMap<String, String>();
        hashMap3.put("type","f");
        list.add(hashMap3);
        HashMap<String, String> hashMap2 = new HashMap<String, String>();
        hashMap2.put("type","b");
        list.add(hashMap2);
        HashMap<String, String> hashMap4 = new HashMap<String, String>();
        hashMap4.put("type","d");
        list.add(hashMap4);

2.2.實(shí)現(xiàn)的方法

??實(shí)現(xiàn)需將上述準(zhǔn)備的list作為入?yún)魅朐摲椒ㄟM(jìn)行操作:首先需定義一個(gè)新的list1,用來封裝排序好的數(shù)據(jù)。然后是進(jìn)行循環(huán)(外層為自定義規(guī)則的值,內(nèi)層為排序前的數(shù)據(jù)),去循環(huán)的過程中根據(jù)自定義排序的strlist進(jìn)行依次判斷l(xiāng)ist(排序前的數(shù)據(jù))是否存在自定義的值,存在即放到新的list1中,然后將排序好的list1返回。 如果kay排序看懂了,相信value也能夠輕松的看懂下述代碼。
提示:這里的最內(nèi)層循環(huán):我的每個(gè)map都存放的一個(gè)key,value,所以直接取值判斷。如放多個(gè)值,需在最內(nèi)層中寫if判斷根據(jù)哪個(gè)值進(jìn)行對(duì)該map排序。這里在擴(kuò)展中會(huì)說。。。

public static String sortValue(List<HashMap<String,String>> list,ArrayList<String> strlist) {
        ArrayList<HashMap<String, String>> list1 = new ArrayList<>();
        for (int i = 0; i < strlist.size(); i++) {
            for (int j = 0; j < list.size(); j++) {
                HashMap<String, String> map1 = list.get(j);
                String type = map1.get("type");
                if(strlist.get(i).equals(type)){
                    list1.add(map1);
                }
            }
        }
        return list1.toString();
    }

2.3.效果展示

打印代碼如下:

		System.out.println("根據(jù)map的value排序前="+list);
        //根據(jù)map值排序
        String sortValue = sortValue(list,strlist);
        System.out.println("根據(jù)map的value排序后="+sortValue);

效果圖展示如下圖所示:可看到根據(jù)key值排序前后的不同。
List<HashMap<String,String>>實(shí)現(xiàn)自定義字符串排序(key排序、Value排序),java知識(shí)點(diǎn),后端知識(shí)點(diǎn),list,數(shù)據(jù)結(jié)構(gòu),java,算法,junit

三、擴(kuò)展思路及方法的運(yùn)用

??對(duì)于方法中上述提到的如果map中有多個(gè)值的情況,需先定義哪個(gè)值作為排序的值。

例如sortKey時(shí),如果根據(jù)的是map中key為“score”進(jìn)行排序,那么這里需這樣寫,如下述代碼所示:

		//取值
       Set<String> keys = map1.keySet();
       for (String key : keys) {
           //根據(jù)map里的哪個(gè)值排序 加if判斷即可
           if("score".equals(key)){
               keyc=key;
           }
       }

例如sortValue時(shí),如果根據(jù)的是map中key為“type”的value進(jìn)行排序,那么這里需這樣寫,如下述代碼所示:

List<HashMap<String,String>>實(shí)現(xiàn)自定義字符串排序(key排序、Value排序),java知識(shí)點(diǎn),后端知識(shí)點(diǎn),list,數(shù)據(jù)結(jié)構(gòu),java,算法,junit


總結(jié)

??對(duì)于value的排序是我在工作中根據(jù)真實(shí)需求進(jìn)行的編寫,在編寫的過程中也有很多想法。但在有限的時(shí)間內(nèi)還是選擇了這種比較耗時(shí)的算法。key的排序是我臨時(shí)想到編寫的,也是給大家一個(gè)思路。如有在value排序中比我這種方法好的想法或者代碼歡迎在評(píng)論區(qū)討論,我們一起交流學(xué)習(xí)~文章來源地址http://www.zghlxwxcb.cn/news/detail-731726.html

到了這里,關(guān)于List<HashMap<String,String>>實(shí)現(xiàn)自定義字符串排序(key排序、Value排序)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Java 字符串?dāng)?shù)組定義_「string數(shù)組」string 數(shù)組怎么定義

    前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站 點(diǎn)擊跳轉(zhuǎn)瀏覽。 String arr[] = new String[10]; //創(chuàng)建一個(gè)長度為10的String 類型數(shù)組。 String arr[] = {“張三”,“李四”}; 這個(gè)是最常用的 String[] arr = new String[10];

    2024年02月15日
    瀏覽(25)
  • List<Long> 類型數(shù)據(jù)轉(zhuǎn)為string字符串類型 jdk1.8新特性

    話不多說,直接上代碼 這里,我們首先將 ListLong 轉(zhuǎn)換為 StreamLong ,然后使用 map() 方法將每個(gè) Long 類型的元素轉(zhuǎn)換為字符串類型,再使用 Collectors.joining() 方法將所有字符串連接起來并用逗號(hào)和空格分隔。 需要注意的是, Collectors.joining() 方法返回的是一個(gè)字符串類型的結(jié)果,

    2024年02月13日
    瀏覽(32)
  • C#使用自定義的比較器對(duì)版本號(hào)(編碼)字符串進(jìn)行排序

    C#使用自定義的比較器對(duì)版本號(hào)(編碼)字符串進(jìn)行排序

    給定一些數(shù)據(jù),如下所示: “1.10.1.1.1.2”, “1.1”, “2.2”, “1.1.1.1”, “1.1.3.1”, “1.1.1”, “2.10.1.1.1”, “1.1.2.1”, “1.2.1.1”, “2.5.1.1”, “1.10.1.1”, “1.10.2.1”, “1.11.3.1”, “1.11.12.1”, “1.11.11.1”, “1.11.3.1”, “1”, “1.1.1.1.1”, “1.1.1.1.1.1” 實(shí)現(xiàn)效果: 按照每個(gè)節(jié)點(diǎn)層

    2024年02月11日
    瀏覽(41)
  • Java-json相關(guān)轉(zhuǎn)換,JSONObject與實(shí)體類/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)常使用,但有時(shí)候還是會(huì)忘記or遇到些奇奇怪怪的問題。以此記錄,提醒自己~不定期更新~ 實(shí)體類和JSONObject互轉(zhuǎn) Map和JSONObject互轉(zhuǎn) String轉(zhuǎn)JSONObject 實(shí)體類轉(zhuǎn)JSON字符串時(shí)不過濾NULL空值 獲取JSONObject中的key value List和

    2024年02月12日
    瀏覽(29)
  • Java實(shí)現(xiàn)字符串排序的幾種方式

    創(chuàng)建實(shí)體類(此處引入了lombok) 一、使用List集合中自帶的sort方法(字符串的位數(shù)保持一致,不一致的情況可以在左邊補(bǔ)0,也可以使用String.format()方法補(bǔ)全) 1、在對(duì)象排序中使用 2、在字符串排序中使用 二、使用Stream流(字符串的位數(shù)保持一致,不一致的情況可以在左邊補(bǔ)

    2024年02月11日
    瀏覽(19)
  • String(字符串)

    String(字符串)

    java.lang.String類代表字符串,Java程序中的所有字符串文字(例如“abc”)都為此類的對(duì)象。 字符串的內(nèi)容是不會(huì)發(fā)生改變的,它的對(duì)象在創(chuàng)建后不能被更改。 String是Java定義好的一個(gè)類。定義在java.lang包中,所以使用的時(shí)候不需要導(dǎo)包。 Java程序中的所有字符串文字都被實(shí)為此

    2024年02月13日
    瀏覽(32)
  • String字符串

    String字符串

    直接創(chuàng)建 代碼簡單,節(jié)約內(nèi)存 使用new創(chuàng)建 有new就會(huì)開辟一個(gè)新的小空間,地址值不同不會(huì)復(fù)用浪費(fèi)空間 案例:用戶登錄 遍歷字符串 統(tǒng)計(jì)字符個(gè)數(shù) 拼接字符串 字符串反轉(zhuǎn) 金額轉(zhuǎn)換 手機(jī)號(hào)屏蔽 敏感詞替換 使用場景:1.字符串拼接。2、字符串反轉(zhuǎn) 常用方法練習(xí) 對(duì)稱字符串

    2024年02月16日
    瀏覽(22)
  • 【string題解 C++】字符串相乘 | 翻轉(zhuǎn)字符串III:翻轉(zhuǎn)單詞

    【string題解 C++】字符串相乘 | 翻轉(zhuǎn)字符串III:翻轉(zhuǎn)單詞

    目錄 字符串相乘 題面 錯(cuò)誤記錄 Way1 拆分成“先乘后加” 思路 實(shí)現(xiàn) 時(shí)空復(fù)雜度分析 反思 Way2 用數(shù)組 思路 實(shí)現(xiàn) 時(shí)空復(fù)雜度分析 翻轉(zhuǎn)字符串III:翻轉(zhuǎn)字符串中的單詞 題面 錯(cuò)誤記錄 思路1 遍歷找單詞 實(shí)現(xiàn) 思路2 暴力解法 實(shí)現(xiàn) 力扣(LeetCode)官網(wǎng) - 全球極客摯愛的技術(shù)成長平

    2024年02月07日
    瀏覽(25)
  • C# 字符串(String)

    C#基礎(chǔ)學(xué)習(xí)入門系列- C# 字符串(String) C#字符串(String)是一種不可變的序列字符。任何對(duì)字符串的操作都會(huì)返回一個(gè)新的字符串。字符串在C#中是一個(gè)引用類型,使用System.String類表示。 字符串可以通過使用雙引號(hào)或者@符號(hào)來創(chuàng)建。雙引號(hào)用于創(chuàng)建普通字符串 ,例如: @符

    2024年01月21日
    瀏覽(64)
  • redis—String字符串

    redis—String字符串

    目錄 前言 1.字符串?dāng)?shù)據(jù)類型 2.常見命令 3.典型應(yīng)用場景 字符串類型是Redis最基礎(chǔ)的數(shù)據(jù)類型,關(guān)于字符串需要特別注意: 1)首先Redis中所有的鍵的類型都是字符串類型,而且其他幾種數(shù)據(jù)結(jié)構(gòu)也都是在字符串類似基礎(chǔ).上構(gòu)建的,例如列表和集合的 元素類型是字符串類型,所以

    2024年02月02日
    瀏覽(18)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包