JAVA使用String转Map的详细方法

一、JAVA String转Set

在进行JAVA String转Map之前,我们可以先介绍一下String转Set的实现方式。

Java的Collections类中,提供了一个静态方法:public static Set emptySet(),用于返回一个不可修改的空Set。通过这个方法,我们可以将一个String类型的数据,通过先把String转化为数组,再将数组放入Set集合中。示例代码如下:

public static Set stringToSet(String inputStr, String separator) {
    if (StringUtils.isBlank(inputStr)) {
        return Collections.emptySet();
    }
    String[] split = StringUtils.split(inputStr, separator);
    return Sets.newHashSet(split);
}

这样,我们就可以将一个以分隔符隔开的String值,通过上述代码方法转成Set了。

二、JAVA String转List

与Set类似,我们也可以先把String类型的数据转化为数组,再通过Arrays的asList()方法将数组转化为List。示例代码如下:

public static List stringToList(String inputStr, String separator) {
    if (StringUtils.isBlank(inputStr)) {
        return Collections.emptyList();
    }
    String[] split = StringUtils.split(inputStr, separator);
    return Arrays.asList(split);
}

通过上述代码方法,我们可以将一个以分隔符隔开的String值,转化为List了。

三、JAVA String转Date

在进行Java String转Map的过程中,有时我们需要将String类型的时间格式转换为Date类型。这时,我们可以使用SimpleDateFormat类中的parse()方法,将String转成Date对象。示例代码如下:

public static Date stringToDate(String inputStr, String pattern) throws ParseException {
    if (StringUtils.isBlank(inputStr)) {
        return null;
    }
    SimpleDateFormat sdf = new SimpleDateFormat(pattern);
    return sdf.parse(inputStr);
}

上述代码中,pattern表示时间格式,例如“yyyy-MM-dd HH:mm:ss”。这样,我们就可以将一个指定格式的时间类型的String值,通过上述代码方法转成Date了。

四、JAVA String转Map

现在来看最重要的Java String转Map过程。我们接下来介绍3种不同的方式,分别是利用自带的Map的方法,利用BeanUtils的方法,利用Json的方式。

1. Java String转Map方法一

我们可以利用JAVA自带的Map中的put()方法将键值对一个个添加到Map中。如下:

public static Map stringToMap(String inputStr, String itemSeparator, String kvSeparator) {
    if (StringUtils.isBlank(inputStr)) {
        return Collections.emptyMap();
    }
    Map map = Maps.newLinkedHashMap();
    String[] items = StringUtils.split(inputStr, itemSeparator);
    for (String item : items) {
        String[] kvs = StringUtils.split(item, kvSeparator);
        if (kvs.length == 2) {
            map.put(kvs[0], kvs[1]);
        }
    }
    return map;
}

代码中,itemSeparator为分隔符,kvSeparator为键值对之间的分隔符,我们使用的是Guava中的Maps.newLinkedHashMap()方法来创建一个LinkedHashMap,因为LinkedHashMap可以保证顺序,并且可以放入null键和null值。

2. Java String转Map方法二

我们也可以通过BeanUtils的populate()方法来将inputStr中的键值对自动封装成Bean对象,再通过BeanUtils的describe()方法把对象的键值对转成一个map。示例如下:

public static Map stringToMap(String inputStr, String itemSeparator, String kvSeparator) throws Exception {
    if (StringUtils.isBlank(inputStr)) {
        return Collections.emptyMap();
    }
    MyBean bean = new MyBean();
    String[] items = StringUtils.split(inputStr, itemSeparator);
    for (String item : items) {
        String[] kvs = StringUtils.split(item, kvSeparator);
        if (kvs.length == 2) {
            BeanUtils.setProperty(bean, kvs[0], kvs[1]);
        }
    }
    return BeanUtils.describe(bean);
}

示例代码中,MyBean是一个普通的JavaBean对象。这种方式主要是适用于字符串中包含的键值对比较简单,且对象的属性名称跟键名称一致时使用。

3. Java String转Map方法三

我们还可以通过JSON将字符串转成Map。这种方式更加简便,直接调用Jackson的ObjectMapper对象即可。示例如下:

public static Map stringToMap(String inputStr) {
    if (StringUtils.isBlank(inputStr)) {
        return Collections.emptyMap();
    }
    ObjectMapper om = new ObjectMapper();
    Map map = Maps.newLinkedHashMap();
    try {
        map = om.readValue(inputStr, LinkedHashMap.class);
    } catch (Exception e) {
        // log error
    }
    return map;
}

上述代码中,我们使用了LinkedHashMap来保证顺序。这种方式对于字符串中包含的键值对比较复杂时,使用效果更佳,但对于性能方面需要注意。

五、总结

以上就是Java中使用String转Map的方法。我们首先介绍了String转Set和String转List的实现方法,然后分别展示了3种不同方式的String转Map方法。不同的方式有不同的适用范围,可以根据具体的场景需求选择合适的方法。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/158310.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-11-19 00:40
下一篇 2024-11-19 00:40

相关推荐

  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • ArcGIS更改标注位置为中心的方法

    本篇文章将从多个方面详细阐述如何在ArcGIS中更改标注位置为中心。让我们一步步来看。 一、禁止标注智能调整 在ArcMap中设置标注智能调整可以自动将标注位置调整到最佳显示位置。…

    编程 2025-04-29
  • 解决.net 6.0运行闪退的方法

    如果你正在使用.net 6.0开发应用程序,可能会遇到程序闪退的情况。这篇文章将从多个方面为你解决这个问题。 一、代码问题 代码问题是导致.net 6.0程序闪退的主要原因之一。首…

    编程 2025-04-29
  • Python创建分配内存的方法

    在python中,我们常常需要创建并分配内存来存储数据。不同的类型和数据结构可能需要不同的方法来分配内存。本文将从多个方面介绍Python创建分配内存的方法,包括列表、元组、字典、…

    编程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一个类的构造函数,在创建对象时被调用。在本篇文章中,我们将从多个方面详细讨论init方法的作用,使用方法以及注意点。 一、定义init方法 在Pyth…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29

发表回复

登录后才能评论