JavaMap工具类(MapUtils)
2023-12-17 17:08:21
1、Object转Map
2、将 map 中的 value 为null的的元素转成空字符串""
3、map转Object
4、MAP 判空
5、Map 排序 按key值长度进行排序
6、两个MAP对比,在oldMap中移除remMap中所有的key值
备注:排序的话(TreeMap)是可以直接实现简单排序的,如果有复杂的业务场景可以重写Comparator
引入jar
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.8.3</version>
</dependency>
import org.apache.commons.beanutils.BeanMap;
import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.*;
import static org.apache.commons.beanutils.BeanUtils.populate;
/**
* MAP工具类
* TreeMap是有序的 默认正序排列
*/
public class MapUtils {
/**
* Object转Map
*
* @param obj
* @return
*/
public static Map<?, ?> objectToMap(Object obj) {
if (obj == null) {
return null;
}
return new BeanMap(obj);
}
/**
* Object转Map
*
* @param obj
* @return
* @throws IllegalAccessException
*/
public static Map<?, ?> objectToMapA(Object obj) throws IllegalAccessException {
if (obj == null) {
return null;
}
Map<String, Object> map = new HashMap<>();
Class<?> clazz = obj.getClass();
for (Field field : clazz.getDeclaredFields()) {
field.setAccessible(true);
String fieldName = field.getName();
Object value = field.get(obj);
map.put(fieldName, value);
}
return map;
}
/**
* Object 转MAP
*
* @param obj
* @return
* @throws IllegalAccessException
* @throws NoSuchMethodException
* @throws InvocationTargetException
*/
public static Map<?, ?> objectToMapB(Object obj) throws IllegalAccessException, NoSuchMethodException, InvocationTargetException {
if (obj == null) {
return null;
}
//使用BeanUtils获取对象属性
return BeanUtils.describe(obj);
}
/**
* 将 map 中的 value 为null的的元素转成空字符串""
*
* @param map
* @return
*/
public static Map<Integer, String> valueConvertString(Map<Integer, String> map) {
map.forEach((k, v) -> {
if (null == v || "".equals(v)) {
map.put(k, "\" \"");
}
});
return map;
}
/**
* map转Object
*
* @param map
* @param beanClass
* @return
* @throws Exception
*/
public static Object mapToObject(Map<String, Object> map, Class<?> beanClass) {
if (map == null) {
return null;
}
try {
Object obj = beanClass.newInstance();
populate(obj, map);
return obj;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* MAP 判空
*
* @param map
* @return
*/
public static boolean isEmpty(Map<?, ?> map) {
return map == null || map.isEmpty();
}
/**
* Map 排序 按key值长度进行排序
*
* @param map
* @return
*/
public static Map<String, String> sortMapByKey(Map<String, String> map) {
if (CommonFunctions.isEmpty(map)) {
return null;
}
Map<String, String> sortMap = new TreeMap<>(new MapKeyComparator());
sortMap.putAll(map);
return sortMap;
}
/**
* 两个MAP对比,在oldMap中移除remMap中所有的key值
*
* @param remMap 移除的key
* @param oldMap 需要移除key值的MAP
*/
public static void removeKey(Map remMap, Map oldMap) {
if (CommonFunctions.isEmpty(remMap) || CommonFunctions.isEmpty(remMap)) {
return;
}
Iterator iterator = remMap.keySet().iterator();
while (iterator.hasNext()) {
String key = (String) iterator.next();
oldMap.remove(key);
}
}
public static void main(String[] args) {
//只是简单的排序 这里足够用了
Map<String, Object> map = new TreeMap<>();//正序
map.put("A1", 3);
map.put("D3", 1);
map.put("B4", 2);
map.put("C2", 4);
map.forEach((k, v) -> System.out.println("正序====KEY==" + k + "====VALUE====" + v));
Map<String, Object> mapDesc = new TreeMap<>(new MapKeyComparatorDesc());//倒序
mapDesc.put("A1", 3);
mapDesc.put("D3", 1);
mapDesc.put("B4", 2);
mapDesc.put("C2", 4);
mapDesc.forEach((k, v) -> System.out.println("倒序====KEY==" + k + "====VALUE====" + v));
Map<String, String> keyMap = new HashMap<>();
keyMap.put("A", "Q");
keyMap.put("AA", "Q");
keyMap.put("AAAA", "Q");
keyMap.put("AAA", "Q");
keyMap.put("AAAAA", "Q");
keyMap.forEach((k, v) -> System.out.println("排序前====KEY==" + k + "====VALUE====" + v));
Map<String, String> map1 = sortMapByKey(keyMap);
map1.forEach((k, v) -> System.out.println("排序后====KEY==" + k + "====VALUE====" + v));
}
}
//比较1 (默认比较级倒转)
class MapKeyComparatorDesc implements Comparator {
@Override
public int compare(Object o1, Object o2) {
String i1 = (String) o1;
String i2 = (String) o2;
return -i1.compareTo(i2);
}
}
//比较2 (key值长度比较)
class MapKeyComparator implements Comparator<String> {
@Override
public int compare(String o1, String o2) {
if (o1.length() > o2.length()) {
return -1;
} else if (o1.length() < o2.length()) {
return 1;
} else {
return o2.compareTo(o1);
}
}
}
文章来源:https://blog.csdn.net/weixin_59383491/article/details/134927559
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!