java中Entry接口的使用,而不是遍历HashMap类对象

Posted

技术标签:

【中文标题】java中Entry接口的使用,而不是遍历HashMap类对象【英文标题】:Use of Entry interface in java other than iterating over HashMap class objects 【发布时间】:2021-10-17 23:15:58 【问题描述】:

Entry 接口用于在 entrySet() 和 keySet() 方法的帮助下迭代 HashMap、LinkedHashMap 和 TreeMap 类对象。

Entry接口还有其他用途吗?

有没有实现Entry接口的类可以代替Pair类(javafx.util.Pair)来存储配对值?

【问题讨论】:

不是Entry。这是Map.Entry。它是Map 接口的一部分,仅适用于Maps 【参考方案1】:

Map.Entry

Map 接口有一个嵌套接口Map.Entry。该接口包含一对对象,即映射中每个条目的键和值。

Java 捆绑了两个具体的实现,一个可变的,一个不可变的,都嵌套在 AbstractMap 中。

AbstractMap.SimpleEntry AbstractMap.SimpleImmutableEntry

这些具体的类确实已被某些人用作一般用作配对的类,而没有涉及任何映射。 javafx.util.Pair 同上。

通常更好地定义您自己的类,明确命名特定于您的问题域的上下文。

record

对于 Java 16 及更高版本中的不可变配对,请使用 records 功能。您只需要声明成员字段的类型和名称。编译器隐式创建构造函数、getter、equals & hashCodetoString

将自定义类定义为记录可以很容易地简洁地定义您自己的对。

record Point ( int x , int y ) 
record Coordinate( double latitude , double longitude ) 
record Pixel( int horizontal , int vertical ) 
record Assignment( UUID employeeId , String projectName ) 

请注意,您可以在本地、方法内、嵌套或单独声明记录。 Java 16+ 中的枚举和接口也是如此。

【讨论】:

以上是关于java中Entry接口的使用,而不是遍历HashMap类对象的主要内容,如果未能解决你的问题,请参考以下文章

java中Map.Entry的使用方法

java 数据集合类

JAVA入门学习:Java HashMap实例源码分析

Java中关于HashMap的元素遍历的顺序问题

周末自己动手撸一个 HashMap,美滋滋

使用 entrySet 遍历 Map 类集合 KV ,而不是 keySet 方式进行遍历的好处