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
接口的一部分,仅适用于Map
s
【参考方案1】:
Map.Entry
Map
接口有一个嵌套接口Map.Entry
。该接口包含一对对象,即映射中每个条目的键和值。
Java 捆绑了两个具体的实现,一个可变的,一个不可变的,都嵌套在 AbstractMap
中。
AbstractMap.SimpleEntry
AbstractMap.SimpleImmutableEntry
这些具体的类确实已被某些人用作一般用作配对的类,而没有涉及任何映射。 javafx.util.Pair
同上。
通常更好地定义您自己的类,明确命名特定于您的问题域的上下文。
record
对于 Java 16 及更高版本中的不可变配对,请使用 records 功能。您只需要声明成员字段的类型和名称。编译器隐式创建构造函数、getter、equals
& hashCode
和 toString
。
将自定义类定义为记录可以很容易地简洁地定义您自己的对。
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类对象的主要内容,如果未能解决你的问题,请参考以下文章