当前位置: 首页 > news >正文

List<HashMap<String, Object>>排序

如果列表中的元素类型是List<HashMap<String, Object>>,排序时需要考虑到value可能是任意类型的对象。在这种情况下,你可以针对具体的类型进行比较,或者使用Comparable接口来确保对象可以被正确比较。

示例代码
假设我们想要根据value的字符串表示来进行排序,可以使用toString()方法将Object转换为String,然后进行比较。下面是一个示例:

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class SortByValue {public static void main(String[] args) {// 示例数据List<HashMap<String, String>> listOfMaps = new ArrayList<>();HashMap<String, String> map1 = new HashMap<>();map1.put("key1", "value3");map1.put("key2", "value2");listOfMaps.add(map1);HashMap<String, String> map2 = new HashMap<>();map2.put("key3", "value1");map2.put("key4", "value4");listOfMaps.add(map2);HashMap<String, String> map3 = new HashMap<>();map3.put("key5", "value5");map3.put("key6", "value1");listOfMaps.add(map3);// 排序List<HashMap<String, String>> sortedList = sortByValue(listOfMaps);// 输出结果System.out.println(sortedList);}public static List<HashMap<String, String>> sortByValue(List<HashMap<String, String>> listOfMaps) {Collections.sort(listOfMaps, new Comparator<HashMap<String, String>>() {@Overridepublic int compare(HashMap<String, String> o1, HashMap<String, String> o2) {// 获取第一个键的值进行比较Iterator<Map.Entry<String, String>> iterator1 = o1.entrySet().iterator();Map.Entry<String, String> entry1 = iterator1.hasNext() ? iterator1.next() : null;Iterator<Map.Entry<String, String>> iterator2 = o2.entrySet().iterator();Map.Entry<String, String> entry2 = iterator2.hasNext() ? iterator2.next() : null;// 比较两个valueif (entry1 != null && entry2 != null) {return entry1.getValue().compareTo(entry2.getValue());}return 0;}});return listOfMaps;}
}

上面是升序排序,如果想降序排序,写成entry2.getValue().compareTo(entry1.getValue());就行了

如果是jdk1.8及以上,使用流来处理更简洁

public static List<HashMap<String, String>> sortByValue(List<HashMap<String, String>> listOfMaps) {return listOfMaps.stream().sorted(Comparator.comparing(map -> {// 获取第一个键的值进行比较return map.values().iterator().next();})).collect(Collectors.toList());}
http://www.lryc.cn/news/417286.html

相关文章:

  • 【大数据】探索大数据基础知识:定义、特征与生态系统
  • 营销材料翻译质量对销售渠道的影响
  • centos7.9安装k8s 1.3
  • 【第七节】python多线程及网络编程
  • Linux Shell编程--变量
  • 软文写作必须掌握的技巧有哪些?
  • 探索灵办AI:智能办公的好帮手
  • gin-vue-admin框架遇到AxiosError:Network Error怎么解决?
  • 作业zzz
  • python 空list如何表示
  • C++ const、constexpr与consteval作用与区别
  • solidity 数学和密码学函数
  • opencv-图像透视变换
  • C++ 域
  • 安装Supervisor队列进程、管理 Laravel 队列进程
  • Windows入侵排查秘籍:锁死安全漏洞
  • 根据《广东省政务服务数字化条例》规定,政务服务数字化,是指将___广泛应用于政务服务,推动政务服务更加智能、便捷、高效的活动。()
  • git的基本操作和原理
  • Unity补完计划 之 SpriteRender
  • 数据结构第九讲:二叉树
  • 英伟达推出B200A瞄准OEM客群,预估2025年高端GPU出货量年增55%
  • Codeforces Round 962 (Div. 3)-补题
  • pandas的文本与序列化
  • 在企业级环境中部署Java程序:Docker命令实用指南
  • LabVIEW远程开发
  • 工作随记:我在OL8.8部署oracle rac遇到的问题
  • C++:vector容器
  • 深入理解 AWS CodePipeline
  • Qt:自定义钟表组件
  • 前端性能优化-web资源加载优先级