java-如何对vo里面的字段或者Map里面数据进行排序
文章目录
- 前言
- java-如何对vo里面的字段或者Map里面数据进行排序
- 1. 对vo里面的字段进行遍历- 正序排序
- 2. 对vo里面的字段进行遍历- 倒序排序
- 3. 对Map里边的内容进行倒序排序
- 4. 测试
前言
如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!
java-如何对vo里面的字段或者Map里面数据进行排序
- 对vo里面的字段进行排序采用的是利用反射机制 来遍历一个类的所有字段;
- 对Map里面的数据进行排序采用的是先转成list进行倒序,然后使用 LinkedHashMap进行插入,因为 LinkedHashMap可以确保插入顺序,Map本身就是无序状态;
1. 对vo里面的字段进行遍历- 正序排序
public static void testA(OperationLogRes vo ){System.out.println("对vo里面的字段进行遍历- 正序排序");// 获取 VO 对象的 Class 实例Class<?> clazz = vo.getClass();// 获取所有字段(包括私有字段)Field[] fields = clazz.getDeclaredFields();// 遍历字段并打印其名称和值for (Field field : fields) {field.setAccessible(true); // 允许访问私有字段try {// 获取字段的名称String fieldName = field.getName();// 获取字段的值Object value = field.get(vo);// 打印字段名称和值System.out.println(fieldName + ": " + value);} catch (IllegalAccessException e) {e.printStackTrace();}}}
2. 对vo里面的字段进行遍历- 倒序排序
public static void testB(OperationLogRes vo){System.out.println("对vo里面的字段进行遍历- 倒序排序");// 获取 VO 对象的 Class 实例Class<?> clazz = vo.getClass();// 获取所有字段(包括私有字段)Field[] fields = clazz.getDeclaredFields();// 倒序遍历字段并打印其名称和值for (int i = fields.length - 1; i >= 0; i--) {Field field = fields[i];field.setAccessible(true); // 允许访问私有字段try {// 获取字段的名称String fieldName = field.getName();// 获取字段的值Object value = field.get(vo);// 打印字段名称和值System.out.println(fieldName + ": " + value);} catch (IllegalAccessException e) {e.printStackTrace();}}}
3. 对Map里边的内容进行倒序排序
public static void testC(Map<String, String> map){System.out.println("对Map里边的内容进行倒序排序");// 将 Map 的 entrySet 转换为 ListList<Map.Entry<String, String>> entryList = new ArrayList<>(map.entrySet());// 按照键进行倒序排序entryList.sort(Map.Entry.<String, String>comparingByKey().reversed());// 将排序后的结果放入 LinkedHashMap(使用 LinkedHashMap 可以确保插入顺序)Map<String, String> sortedMap = Maps.newLinkedHashMap();for (Map.Entry<String, String> entry : entryList) {sortedMap.put(entry.getKey(), entry.getValue());}// 输出倒序后的 MapSystem.out.println("倒序后的 Map: " + sortedMap);}
4. 测试
public static void main(String[] args) {OperationLogRes vo = new OperationLogRes("AAA", new Date(), "CCC","DDD","EEE","FFF");testB(vo);testA(vo);Map<String, String> map = Maps.newLinkedHashMap();map.put("A", "Apple");map.put("B", "Banana");map.put("C", "Cherry");map.put("D", "Date");testC(map);}
效果: