一、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/zh-hant/n/158310.html