欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Hutool開發(fā)MapUtil工具類使用示例

 更新時間:2022年10月07日 10:52:58   作者:JAVA旭陽  
這篇文章主要為大家介紹了Hutool開發(fā)MapUtil工具類使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

概述

Hutool是一個小而全的Java工具類庫,通過靜態(tài)方法封裝,降低相關API的學習成本,提高工作效率,使Java擁有函數(shù)式語言般的優(yōu)雅,讓Java語言也可以“甜甜的”。

目前公司項目中主要采用Hutool作為項目的工具包,相對于google的guava, hutool的工具類采用中文注釋,更加符合國人使用。所謂知己知彼,我們需要了解Hutool都具有什么樣的功能,才能夠最大化發(fā)揮它的價值。

本文主要就hutool 5.8.8版本, 介紹其中一個操作Map哈希表的工具類MapUtil,我這邊主要介紹幾個比較好用的方法。

行列互轉(zhuǎn)

大家是不是遇到過將多個map以key進行分組,然后相同key下的value合并成一個list的場景,現(xiàn)在可以通過下面的行列互轉(zhuǎn)的方式輕松解決。

  • toListMap:行轉(zhuǎn)列,合并相同的鍵,值合并為列表。
  • toMapList: 列轉(zhuǎn)行。將Map中值列表分別按照其位置與key組成新的map。
@Test
public void toListMapTest() {
    Map<String, String> map1 = MapUtil.of("a", "1");
    Map<String, String> map2 = MapUtil.of("a", "5");
    Map<String, String> map3 = MapUtil.of("b", "4");
    Map<String, String> map4 = MapUtil.of("a", "5");
    List<Map<String, String>> maps = new ArrayList<>();
    maps.add(map1);
    maps.add(map2);
    maps.add(map3);
    maps.add(map4);
    // 調(diào)用toListMap, 將list轉(zhuǎn)為map
    System.out.println("toListMap: ");
    Map<String, List<String>> listMap = MapUtil.toListMap(maps);
    System.out.println(listMap);
    // toMapList, 將map轉(zhuǎn)為list
    System.out.println("toMapList: ");
    List<Map<String, String>> mapList = MapUtil.toMapList(listMap);
    System.out.println(mapList);
}

結果:

鍵值互換

  • inverse或者reverse方法,Map的鍵和值互換
@Test
public void inverseTest() {
    Map<String, String> map = MapUtil.newHashMap();
    map.put("a", "1");
    map.put("b", "2");
    map.put("c", "1");
    Map<String, String> inverse = MapUtil.inverse(map);
    System.out.println(inverse);
}

結果:

sort排序操作

sort(Map<K, V> map): 排序已有Map,Key有序的Map,使用默認Key排序方式(字母順序)

sort(Map<K, V> map, Comparator<? super K> comparator):排序已有Map,Key有序的Map

sortByValue(Map<K, V> map, boolean isDesc):按照值排序,可選是否倒序

@Test
    public void sortTest() {
        Map<String, String> map = MapUtil.newHashMap();
        map.put("a", "1");
        map.put("b", "2");
        map.put("c", "1");
        // 排序, 不會改變原來的值
        Map<String, String> newMap = MapUtil.sortByValue(map, true);
        System.out.println(newMap);
    }

結果:

join連接操作

  • join: 將map轉(zhuǎn)成字符串
  • sortJoin: 根據(jù)參數(shù)排序后拼接為字符串,常用于簽名
  • joinIgnoreNull: 將map轉(zhuǎn)成字符串,忽略null的鍵和值
@Test
public void joinTest() {
    Map<String, String> map = MapUtil.newHashMap();
    map.put("a", "1");
    map.put("b", "2");
    map.put("c", "1");
    // join
    String str = MapUtil.join(map, ",", "-");
    System.out.println(str);
}

過濾轉(zhuǎn)換操作

  • filter(Map<K, V> map, K... keys): 過濾Map保留指定鍵值對,如果鍵不存在跳過
  • filter(Map<K, V> map, Filter<Entry<K, V>> filter):自定義過濾行為
  • map(Map<K, V> map, BiFunction<K, V, R> biFunction):通過biFunction自定義一個規(guī)則,此規(guī)則將原Map中的元素轉(zhuǎn)換成新的元素,生成新的Map返回
@Test
public void filterTest() {
    Map<String, String> map = MapUtil.newHashMap();
    map.put("a", "1");
    map.put("b", "2");
    map.put("c", "3");
    map.put("d", "4");
    // 過濾出被2整除的數(shù)據(jù)
    Map<String, String> map2 = MapUtil.filter(map, t -> Convert.toInt(t.getValue()) % 2 == 0);
    Assert.assertEquals(2, map2.size());
    Assert.assertEquals("2", map2.get("b"));
    Assert.assertEquals("4", map2.get("d"));
}
@Test
public void mapTest() {
    // Add test like a foreigner
    Map<Integer, String> adjectivesMap = MapUtil.<Integer, String>builder()
            .put(0, "lovely")
            .put(1, "friendly")
            .put(2, "happily")
            .build();
    // 轉(zhuǎn)換操作
    Map<Integer, String> resultMap = MapUtil.map(adjectivesMap, (k, v) -> v + " " + PeopleEnum.values()[k].name().toLowerCase());
    Assert.assertEquals("lovely girl", resultMap.get(0));
    Assert.assertEquals("friendly boy", resultMap.get(1));
    Assert.assertEquals("happily child", resultMap.get(2));
}

獲取get

get操作一定是map非常常用的方法,原生的get方法非常不好用,有時候還需要進行判斷類型等。

@Test
public void getTest() {
    Map<String, Object> map = MapUtil.newHashMap();
    map.put("a", "1");
    map.put("b", "2");
    map.put("c", "1");
    map.put("age", 20);
    String value = MapUtil.getStr(map, "a");
    Assert.assertEquals(value, "1");
    int val = MapUtil.getInt(map, "age", 18);
    Assert.assertTrue(val == 20);
}

總結

本文總結了MapUtil常用的一些操作,具體的大家可以查看源碼,都非常簡單,更多關于Hutool MapUtil工具類的資料請關注腳本之家其它相關文章!

相關文章

  • 用Spring Native將SpringBoot程序轉(zhuǎn)換為GraalVM

    用Spring Native將SpringBoot程序轉(zhuǎn)換為GraalVM

    這篇文章主要介紹了用Spring Native將SpringBoot程序轉(zhuǎn)換為GraalVM的方法,幫助大家更好的理解和學習使用SpringBoot,感興趣的朋友可以了解下
    2021-04-04
  • Java并發(fā)編程總結——慎用CAS詳解

    Java并發(fā)編程總結——慎用CAS詳解

    下面小編就為大家?guī)硪黄狫ava并發(fā)編程總結——慎用CAS詳解。小編覺得挺不錯的, 現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • 使用springboot整合mybatis-plus實現(xiàn)數(shù)據(jù)庫的增刪查改示例

    使用springboot整合mybatis-plus實現(xiàn)數(shù)據(jù)庫的增刪查改示例

    這篇文章主要介紹了使用springboot整合mybatis-plus實現(xiàn)數(shù)據(jù)庫的增刪查改示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Java中的泛型方法詳解及簡單實例

    Java中的泛型方法詳解及簡單實例

    這篇文章主要介紹了Java中的泛型方法詳細介紹的相關資料,需要的朋友可以參考下
    2016-12-12
  • Java與Mysql鎖相關知識總結

    Java與Mysql鎖相關知識總結

    這篇文章主要介紹了Java與Mysql鎖相關知識總結的相關資料,需要的朋友可以參考下
    2023-04-04
  • Mybatis-Plus樂觀鎖配置流程

    Mybatis-Plus樂觀鎖配置流程

    這篇文章主要介紹了Mybatis-Plus樂觀鎖配置使用流程,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作有一定的參考學習價值,感興趣的朋友們下面隨著小編來一起學習吧
    2024-01-01
  • Java連接FTP服務器并使用ftp連接池進行文件操作指南

    Java連接FTP服務器并使用ftp連接池進行文件操作指南

    使用FTP最主要的功能是對文件進行管理,下面這篇文章主要給大家介紹了關于Java連接FTP服務器并使用ftp連接池進行文件操作的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-08-08
  • Java中Map.entry的具體使用

    Java中Map.entry的具體使用

    Map.Entry?是Map中的一個接口,Map.Entry里有相應的getKey和getValue方法,讓我們能夠從一個項中取出Key和Value,本文就詳細的介紹一下Map.entry的具體使用,感興趣的可以了解一下
    2023-05-05
  • SpringBoot調(diào)用第三方接口的幾種方式小結

    SpringBoot調(diào)用第三方接口的幾種方式小結

    在項目中調(diào)用第三方接口時,確實需要根據(jù)項目的技術棧、架構規(guī)范以及具體的業(yè)務需求來選擇最適合的調(diào)用方式,下面我們就介紹幾種調(diào)用第三方接口的實現(xiàn)方式以及代碼示例,需要的朋友可以參考下
    2024-07-07
  • java 實現(xiàn)讀取clob

    java 實現(xiàn)讀取clob

    這篇文章主要介紹了java 如何實現(xiàn)讀取clob,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-10-10

最新評論