使用 entrySet 遍历 Map 类集合 KV

简介: 遍历Map时,entrySet效率高于keySet,因后者需两次遍历:转Iterator和查value,而entrySet一次将KV封装为entry。JDK8推荐使用Map.forEach。values()返回V集合,keySet()返回K集合,entrySet()返回KV组合集。

说明:keySet 其实是遍历了 2 次,一次是转为 Iterator 对象,另一次是从 hashMap 中取出key 所对应的 value。而 entrySet 只是遍历了一次就把 key 和 value 都放到了 entry 中,效率更高。
如果是 JDK8,使用 Map.foreach 方法。
正例:values()返回的是 V 值集合,是一个 list 集合对象;keySet()返回的是 K 值集合,是一个 Set 集合对象;entrySet()返回的是 K-V 值组合集合。

相关文章
|
2月前
|
人工智能 自然语言处理 安全
MCP的核心组件
MCP采用客户端-服务器架构,由MCP主机、客户端和服务器组成。主机承载AI智能体并发起请求;客户端负责请求标准化与安全通信;服务器提供数据、工具和提示,支持AI实时访问外部资源与服务,实现高效交互。
|
2月前
|
机器学习/深度学习 存储 人工智能
全球主流开源向量数据库
开源向量数据库凭借高效索引、相似性搜索、可扩展性及与机器学习框架的深度集成,正成为AI应用的核心基础设施。其活跃社区持续推动生态发展,广泛支持推荐系统、实时分析等场景,助力高维数据高效管理与智能应用落地。
|
2月前
|
机器学习/深度学习 存储 人工智能
大模型基础概念术语解释
大语言模型(LLM)基于Transformer架构,通过海量文本训练,具备强大语言理解与生成能力。其核心组件包括注意力机制、位置编码、嵌入层等,支持万亿级参数规模,展现出涌现与泛化特性。Token为基本处理单元,MoE架构提升效率。模型能力随规模扩大显著跃升,推动AI语言处理发展。
|
2月前
|
人工智能 安全
MCP是什么?为何被称为AI时代的“USB-C”
MCP(模型上下文协议)是AI领域的“通用接口”,像USB-C一样让大模型便捷连接数据源与工具。它通过标准化上下文传递,实现信息互通与任务协同,确保每次调用都具备数据血统、策略与出处管理,推动AI无缝交互与安全可控运行。
|
2月前
|
缓存 安全 Java
线程池初始化严禁使用Executors
阿里巴巴规范禁止使用Executors创建线程池,因可能引发OOM。如newFixedThreadPool使用无界队列,任务堆积易导致内存溢出;newCachedThreadPool可创建过多线程,同样存在风险。推荐通过ThreadPoolExecutor或Guava方式手动创建线程池,明确设置队列容量和线程数,避免资源耗尽,提升系统稳定性。
|
2月前
|
SQL Java 数据库连接
Spring中的事务是如何实现的
Spring事务基于数据库事务与AOP实现,通过代理对象拦截加了@Transactional的方法,创建连接并禁用自动提交,方法执行后根据异常情况决定提交或回滚。事务隔离级别对应数据库级别,传播机制由Spring管理,基于数据库连接实现,复杂但灵活。
|
2月前
|
安全 API
SimpleDateFormat不要定义为static
SimpleDateFormat线程不安全,避免定义为static;若需静态使用,应加锁或采用ThreadLocal隔离。推荐JDK8新时间API:Instant、LocalDateTime、DateTimeFormatter,具备线程安全、简洁易用等优势。
|
2月前
|
存储 Java C++
JVM 运行时数据区
Java虚拟机将内存划分为程序计数器、虚拟机栈、本地方法栈、堆和方法区。各区域职责分明:程序计数器记录线程执行位置;虚拟机栈管理方法调用的局部变量与操作数;本地方法栈服务Native方法;堆是对象实例的共享内存区;方法区存储类信息、常量、静态变量等。部分区域随JVM启动而存在,部分随线程创建销毁。
|
2月前
|
存储 安全
ConcurrentHashMap 底层具体实现
ConcurrentHashMap是线程安全的高效Map集合。JDK1.7采用Segment分段锁机制,每段用ReentrantLock保护,提升并发性能;JDK1.8改用Node数组+链表/红黑树,结合CAS和synchronized锁单节点,减少锁粒度,提高并发效率。