java面试-0215-HashMap有序吗?Comparable和Comparator区别?集合如何排序?

HashMap:无序,元素根据哈希值随机插入。遍历顺序不保证与插入顺序一致,且修改(如扩容)可能改变顺序

Comparable:

接口定义在类内部,compareTo(T o) 方法比较当前对象与另一对象。

修改类实现自然排序(如 String 的字母序)。

Comparator:

独立类实现,compare(T o1, T o2) 方法比较两个对象。

灵活定义外部排序规则,无需修改原类。

List: Collections.sort(list)(需元素实现 Comparable)或 Collections.sort(list, comparator)(自定义 Comparator)

Set:TreeSet 自动排序(基于 Comparable 或构造时传入 Comparator)

Map:TreeMap 按键自动排序(基于 Comparable 或构造时传入 Comparator)

其他转为 List 或 TreeSet/TreeMap 后排序

相关推荐
Flittly15 小时前
【AgentScope Java新手村系列】(16)从RAG到多路检索
java·spring boot·spring
Ruihong16 小时前
Vue withDefaults 转 React:VuReact 怎么处理?
vue.js·react.js·面试
小兔崽子去哪了16 小时前
Java 生成二维码解决方案
java·后端
kyriewen16 小时前
别再这样写 async/await 了:我在 Code Review 中见过最多的 8 个错误
前端·javascript·面试
人活一口气20 小时前
从JVM调优到MCP协议:Java全栈技术体系深度总结与企业级架构实践
java·spring boot
烬羽1 天前
字符串算法入门:从反转字符串到回文判断,面试不再慌
算法·面试
云技纵横1 天前
一个 @Async,把 @Transactional 的事务边界打穿了
后端·面试
想要成为糕糕手1 天前
Harness Engineering:大模型时代的“马鞍”——从记忆层开始,让AI真正为你所用
面试·ai编程·claude
NE_STOP1 天前
Vibe Coding -- 完整项目案例实操
java
荣码1 天前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python