java - Groovy 和 Java 中 MAP 的区别
问题描述
目前,我们使用 Groovy 作为前端,Java Spring 作为后端。
在 groovy 中,我们定义了一个 将在 Java 中Map parameters = [:]
分配给的属性。private Map<String, Object> parameters;
我有一个关于这两种语言的 MAP 接口实例的问题。当我阅读 groovy create by default instance ofLinkedHashMap
和 Java create by default instance of 时HashMap
,这是真的吗?
我的总体要求是保留数据的顺序,LinkedHashMap
但HashMap
不是。
因此前端已经存在LinkedHashMap
,它将有序数据传递到后端。
public void setParameters(Map<String, Object> parameters) {
this.parameters = parameters;
}
这是真的吗?我是否需要将 JAVA(后端)中的模型从更改Map
为LinkedHashMap
?
解决方案
当我阅读 groovy create by default instance of LinkedHashMap 和 Java create by default instance of HashMap 时,这是真的吗?
事实上,Java 默认不会创建任何类型的映射。开发人员选择Map
他们实例化的实现(几乎总是)。Java 没有对应于 Groovy 的 map literal [:]
,因此在 Java 中没有要实例化的“默认”类型。至于 Groovy,map 文字确实创建了一个LinkedHashMap
:
groovy:000> [:].getClass()
===> class java.util.LinkedHashMap
所以前端已经是LinkedHashMap,它会将有序数据传递到后端。[...] 是真的吗?
是的。在运行时,Map
传递给的对象setParameters()
将由您的“前端”代码生成。该调用的行为方式与您LinkedHashMap
从 Java 代码创建 a 并将其传递给该方法的行为相同。运行时不会将对象重新塑造成 a HashMap
(即使它必须做类似的事情,让它成为 aHashMap
将是奇怪的任意)。这里重要的是类型是兼容的,并且LinkedHashMap
是 Map
.
推荐阅读
- python - 如何从内存地址获取数据(python)
- reactjs - 提交后立即调用 Redux Form UPDATE_SYNC_ERRORS
- javascript - JavaScript秒表SetInterval忽略ClearInterval
- java - 将文件内容导入文本区域
- java - 在春天听许多 Kafka Streams
- php - Laravel 5.7 覆盖默认模型表
- wso2 - 将自定义处理程序添加到特定 API wso2 API-Manager
- python-3.x - 当我尝试使用 plpython3u [WIN10,pgAdmin4 3.5] 创建函数时,PosgreSQL 11 失去了连接
- javascript - 如何在 django 中计算博客类别并将其显示在模板中
- java - 从 Oracle 触发器调用 Java 程序