一、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
微信掃一掃
支付寶掃一掃