广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Hutool开发MapUtil工具类使用示例
  • 733
分享到

Hutool开发MapUtil工具类使用示例

2024-04-02 19:04:59 733人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录概述行列互转键值互换sort排序操作join连接操作过滤转换操作获取get总结概述 Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关api的学习成本,提高工

概述

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关api学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。

目前公司项目中主要采用Hutool作为项目的工具包,相对于Google的guava, hutool的工具类采用中文注释,更加符合国人使用。所谓知己知彼,我们需要了解Hutool都具有什么样的功能,才能够最大化发挥它的价值。

本文主要就hutool 5.8.8版本, 介绍其中一个操作Map哈希表的工具类MapUtil,我这边主要介绍几个比较好用的方法。

行列互转

大家是不是遇到过将多个map以key进行分组,然后相同key下的value合并成一个list的场景,现在可以通过下面的行列互转的方式轻松解决。

  • toListMap:行转列,合并相同的键,值合并为列表。
  • toMapList: 列转行。将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);
    // 调用toListMap, 将list转为map
    System.out.println("toListMap: ");
    Map<String, List<String>> listMap = MapUtil.toListMap(maps);
    System.out.println(listMap);
    // toMapList, 将map转为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转成字符串
  • sortJoin: 根据参数排序后拼接为字符串,常用于签名
  • joinIgnoreNull: 将map转成字符串,忽略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);
}

过滤转换操作

  • 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自定义一个规则,此规则将原Map中的元素转换成新的元素,生成新的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整除的数据
    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();
    // 转换操作
    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工具类的资料请关注编程网其它相关文章!

--结束END--

本文标题: Hutool开发MapUtil工具类使用示例

本文链接: https://www.lsjlt.com/news/168869.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Hutool开发MapUtil工具类使用示例
    目录概述行列互转键值互换sort排序操作join连接操作过滤转换操作获取get总结概述 Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工...
    99+
    2022-11-13
  • hutool工具类怎么使用
    这篇文章主要介绍“hutool工具类怎么使用”,在日常操作中,相信很多人在hutool工具类怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”hutool工具类怎么使用”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-21
  • Hutool工具类使用详解
    当今,Java开发者需要处理各种各样的任务,这包括但不限于:日期操作、加密算法、文件操作、Excel数据处理、网络请求等等。而在处理这些任务时,为了提高效率、降低开发难度和复杂度,我们需要借助一些工具类库。Hutool是一个Java工具类库...
    99+
    2023-08-25
    java 开发语言
  • Hutool Java工具类库_ExcelUtil的使用
    目录Hutool Java工具类库_ExcelUtil依赖ExcelUtilExcelReaderExcelWriterjava解析Excel使用hutool工具类Hutool Ja...
    99+
    2022-11-12
  • hutool 工具类基本使用教程
    在之前没有接触到这个工具类的时候,感觉自己好像根本就不知道这个的存在,再次之前没有一个完善的知识体系,但是在发现这个工具类之后,才真的发现这个工具类是真的好用,下面我就简单的介绍一下...
    99+
    2022-11-12
  • 怎么使用Java工具类库hutool
    本篇内容介绍了“怎么使用Java工具类库hutool”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!简介Hutool是Hu + tool的自造...
    99+
    2023-06-16
  • Java并发工具类Future使用示例
    目录前言Future使用示例FutureTask前言 Future是一个接口类,定义了5个方法: boolean cancel(boolean mayInterruptIfRunni...
    99+
    2022-11-13
  • 使用hutool工具发送post请求
     import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.json.JSONObject; import cn.huto...
    99+
    2023-09-08
    json java 前端
  • Hutool Java工具类库_ExcelUtil怎么使用
    这篇文章主要介绍“Hutool Java工具类库_ExcelUtil怎么使用”,在日常操作中,相信很多人在Hutool Java工具类库_ExcelUtil怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作...
    99+
    2023-06-21
  • Java优秀类库Hutool使用示例
    目录介绍如何使用总结介绍   日常的业务开发,我们会重复编写一些代码:日期和字符串相互转换、发送Http请求调用接口、拷贝对象等。所以为了避免重复编写,项目中会封...
    99+
    2023-02-21
    Java Hutool Java Hutool工具包
  • Java全能工具类之Hutool怎么使用
    本篇内容主要讲解“Java全能工具类之Hutool怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java全能工具类之Hutool怎么使用”吧!Hutool简介Hutool是一个Java工...
    99+
    2023-07-05
  • 如何在Java中使用Hutool工具类库
    这篇文章将为大家详细讲解有关如何在Java中使用Hutool工具类库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。HuTool 中的一些常用工具类我们引入这个工具类很简单,直接在 Mavan...
    99+
    2023-06-14
  • Java常用工具类库——Hutool的使用简介
    目录前言HuTool 中的一些常用工具类日期相关 API随机工具图片工具彩色转换成黑白添加文字水印加密解密工具布隆过滤器邮件工具HTML 工具HtmlUtil.cleanHtmlTa...
    99+
    2022-11-12
  • Android开发之拼音转换工具类PinyinUtils示例
    本文实例讲述了Android开发之拼音转换工具类PinyinUtils。分享给大家供大家参考,具体如下:首先下载pinyin4j-2.5.0.jar,拷贝到工程的lib目录里官网下载地址:https://sourceforge.net/pr...
    99+
    2023-05-30
    android 拼音 工具类
  • 推荐两款java开发实用工具 hutool 和 lombok
    一.hutool工具 摘抄一段hutool工具的简介: Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,是项目中“util”包友好的替代,它节...
    99+
    2022-11-12
  • Linux开发工具和Windows开发工具对比的示例分析
    这篇文章给大家分享的是有关Linux开发工具和Windows开发工具对比的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux开发工具就C++开发工具而言,与Windows下微软(VC, VS2005...
    99+
    2023-06-16
  • 如何使用hutool做本地缓存的工具类
    目录用hutool做本地缓存的工具类gradle中引入hutool依赖本地缓存工具类关于hutools工具包的常用方法HttpUtil类用hutool做本地缓存的工具类 gradle...
    99+
    2022-11-13
    使用hutool工具类 本地缓存工具类 工具类
  • 实用的Go语言开发工具及使用示例
    目录前言json-to-goyaml-to-gotable-to-go命令行调用Go 代码调用前言 孙悟空在花果山称王的时候,特意去了一趟东海,在那里淘到了如意金箍棒。因为身为一个山...
    99+
    2022-11-13
  • Java中操作Xml使用备忘[ Hutool工具类XmlUtil、XStream ]
    List item 文章目录 Java中操作Xml使用备忘[ Hutool工具类XmlUtil、XStream ]1. Hutool中XmlUtil的使用简介2. Hutool中XmlUti...
    99+
    2023-09-01
    java xml 开发语言
  • Redis工具类封装RedisUtils的使用示例
    此RedisUtil工具类的功能: 直接使用此RedisUtil工具类的所需条件: 项目基于SpringBoot。pom.xml中需要引入依赖spring-boot-starter...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作