java代码实现map将key转换为驼峰
时间: 2024-02-17 16:04:28 浏览: 22
如果你想在Java中将一个Map的所有key都转换为驼峰命名的形式,可以使用Java 8中引入的Stream API和Lambda表达式来实现。示例代码如下:
```java
import java.util.Map;
import java.util.HashMap;
public class CamelCaseMap {
private static String toCamelCase(String str) {
StringBuilder sb = new StringBuilder();
boolean toUpper = false;
for (char c : str.toCharArray()) {
if (c == '_' || c == '-') {
toUpper = true;
} else {
if (toUpper) {
sb.append(Character.toUpperCase(c));
toUpper = false;
} else {
sb.append(Character.toLowerCase(c));
}
}
}
return sb.toString();
}
public static <T> Map<String, T> toCamelCaseKeys(Map<String, T> map) {
return map.entrySet().stream()
.collect(HashMap::new,
(m, e) -> m.put(toCamelCase(e.getKey()), e.getValue()),
Map::putAll);
}
public static void main(String[] args) {
Map<String, Object> data = new HashMap<>();
data.put("user_name", "Alice");
data.put("user_age", 20);
Map<String, Object> address = new HashMap<>();
address.put("city_name", "Beijing");
address.put("street_name", "Xinjiekou");
data.put("user_address", address);
data.put("user_hobbies", new String[]{"reading", "traveling"});
Map<String, Object> camelCaseData = toCamelCaseKeys(data);
System.out.println(camelCaseData);
// 输出:{userName=Alice, userAge=20, userAddress={cityName=Beijing, streetName=Xinjiekou}, userHobbies=[reading, traveling]}
}
}
```
上述代码中,我们首先定义了一个静态方法toCamelCase,用于将一个字符串转换为驼峰命名的形式。在toCamelCaseKeys方法中,我们使用Map的entrySet方法获取Map中每个键值对,并使用Stream API进行遍历。在遍历过程中,我们使用Lambda表达式将每个键值对的key转换为驼峰命名的形式,并将结果存放到新的Map对象中。最终,toCamelCaseKeys方法将返回一个新的Map对象,其中所有key都已经被转换为驼峰命名的形式。在main方法中,我们创建了一个示例数据对象data,并使用toCamelCaseKeys方法将其转换为驼峰命名的形式。