您的位置:

字符串转map的几种方法

一、字符串转map对象

在Java中,我们可以通过字符串将其转化为map对象,实现方法如下:

    Map map = new HashMap<>();
    String str = "key1=value1,key2=value2,key3=value3";
    String[] keyValuePairs = str.split(",");
    for(String pair : keyValuePairs){
        String[] entry = pair.split("=");
        map.put(entry[0],entry[1]);
    }

  

首先我们新建一个HashMap,然后通过String类中的split()方法分割字符串。其中,我们先使用逗号对字符串进行分割,得到key-value的键值对,然后以等号进行第二次分割,得到每个键值对的键和值,最后将其加入到map中。

二、字符串转map集合

如果我们想要将多个key-value的键值对转为一个map集合,可以如下实现:

    String str = "key1=value1;key2=value2;key3=value3";
    Map map = Arrays.stream(str.split(";"))
                            .map(elem -> elem.split("="))
                            .collect(Collectors.toMap(e -> e[0], e -> e[1]));

  

这种转化方法适用于需要将不同的key-value组合起来转化为一个map结构的情况。以上是使用 java8 的 stream() 函数式编程的方式进行转换。首先以分号对字符串进行分割,得到键值对数组,再以等号对每个键值对数组进行分割,最后通过collect()方法将其转为map集合。

三、字符串转成map

如果我们直接想将一个字符串转为一个具有明显指定类型的map,可以进行以下操作:

    Type type = new TypeToken
   >(){}.getType();
    Gson gson = new Gson();
    String str = "{\"key1\":\"value1\",\"key2\":\"value2\",\"key3\":\"value3\"}";
    Map
     map = gson.fromJson(str, type);

    
   

在这种情况下,我们需要使用到Google Gson库。TypeToken类提供了构造类型对象的方法,能够方便地通过Java反射机制,获取泛型的真实类型。我们创建一个类型对象,然后通过gson.fromJson()方法将字符串转化为指定类型的map。

四、字符串转数字

字符串转为数字是比较常见的操作。下面我们概述几种实现方法和其特点:

1. parseInt()

Java中parseInt()是一种通用方法,但是只能将字符串转化为整型数值。它的实现方法为:

    String str = "123";
    Integer number = Integer.parseInt(str);

但要注意,如果字符串中有非数字字符,会抛出一个NumberFormatException异常。

2. valueOf()

对于整型数值之外的其他数字类型,可以使用相应的valueOf()方法进行转换。它的实现方法为:

    String str = "123.456";
    Float number = Float.valueOf(str);

与parseInt()方法不同的是,valueOf()方法返回的是一个类的实例,而不是基本类型数据。

3. 自动拆箱

Java的自动拆箱功能常用于将数值从一个类型转换为另一个类型。因此,我们可以通过自动拆箱实现字符串到数字的转换:

    String str = "123";
    int value = Integer.valueOf(str);

同样地,需要注意的是,如果字符串中包含非数字字符,将会在拆箱过程中抛出异常。

五、字符串转码出现

在进行字符串转码的时候,最常见的问题就是乱码,下面我们总结几种解决方法:

1. 通过getBytes()方法解决

Java中,可以使用getBytes()方法将字符串以指定的编码方式转换为byte数组:

    String str = "编程";
    byte[] bytes = str.getBytes("GBK");
    String newStr = new String(bytes,"ISO8859_1");

在上面的例子中,我们把"编程"字符串使用"GBK"编码转为byte数组,然后使用"ISO8859_1"编码进行转回字符串。通过这样的方式,就可以有效地解决字符串转码出现的问题。

2. 使用InputStreamReader

还可以通过使用InputStreamReader的方式来解决字符串转码的问题:

    String str = "编程";
    InputStream inputStream = new ByteArrayInputStream(str.getBytes(StandardCharsets.UTF_8));
    Reader reader = new InputStreamReader(inputStream, Charset.forName("GBK"));
    char[] buffer = new char[1024];
    int readCount = reader.read(buffer);
    String newStr = new String(buffer,0, readCount);

使用ByteArrayInputStream函数可以将String类型转化为InputStream类型,使用InputStreamReader函数进行转码。这种方法虽然比较麻烦,但是可以解决更为复杂的编码问题。

六、字符串转整数

在Java中,整数与字符串之间的转换也是一种常见的操作。目前常用的两种方式为parseInt()和valueOf()。parseInt()方法已经在之前的章节介绍过,这里我们主要介绍valueOf()方法:

    String str = "123";
    Integer value = Integer.valueOf(str);

与parseInt()相同,valueOf()方法也只能将字符串转化为整型数值。与parseInt()方法不同的是,它返回的是一个Integer对象,而不是基本数据类型int。

七、字符串转为数字

如果我们想将字符串转为数字(带小数点),可以使用Java提供的BigDecimal类,以下为具体实现方法:

    String str = "2.26";
    BigDecimal decimalNumber = new BigDecimal(str);

使用BigDecimal类可以提高数值计算的精度,确保计算结果的准确性。

八、字符串转字符

我们可以对字符串中的字符进行一个个提取来转化为字符类型:

    String str = "Hello, world!";
    char ch = str.charAt(0);

其中,使用charAt()方法可以取到指定下标的字符,得到的结果是字符类型。

结语

字符串转map的实现方法有很多种,我们可以有多种选择根据实际场景来选择。此外,字符串转换为数字、字符以及其他类型的数据在现实中也十分常见,在我们的日常编程中需要经常使用到。