Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
传递给java列表的对象的内存引用 private final Map namedMessageMap=new HashMap(); List messageList=namedMessageMap.get(queueName); if(messageList==null){ messageList=newarraylist(); namedMessageMap.put(queueName,messageList); } //将项目添加到队列中 messageList.add(消息);_Java_Arraylist_Garbage Collection_Dynamic Memory Allocation - Fatal编程技术网

传递给java列表的对象的内存引用 private final Map namedMessageMap=new HashMap(); List messageList=namedMessageMap.get(queueName); if(messageList==null){ messageList=newarraylist(); namedMessageMap.put(queueName,messageList); } //将项目添加到队列中 messageList.add(消息);

传递给java列表的对象的内存引用 private final Map namedMessageMap=new HashMap(); List messageList=namedMessageMap.get(queueName); if(messageList==null){ messageList=newarraylist(); namedMessageMap.put(queueName,messageList); } //将项目添加到队列中 messageList.add(消息);,java,arraylist,garbage-collection,dynamic-memory-allocation,Java,Arraylist,Garbage Collection,Dynamic Memory Allocation,我有这个代码,现在我在想一件事,我传递给namedMessageMap的消息列表将包含我在末尾添加的消息?在这种情况下,java内存分配是如何工作的?它指向一个新对象或内存引用?新建ArrayList();这将始终创建新对象,messageList将指向指定的最新列表。因此,它将包含您在末尾添加的消息。我传递给namedMessageMap的列表将包含我在末尾添加的消息>>为什么不试试看?^^新建ArrayList();将创建新对象(涉及内存分配)哪个引用存储在messageList变量中,然后

我有这个代码,现在我在想一件事,我传递给namedMessageMap的消息列表将包含我在末尾添加的消息?在这种情况下,java内存分配是如何工作的?它指向一个新对象或内存引用?

新建ArrayList();这将始终创建新对象,messageList将指向指定的最新列表。因此,它将包含您在末尾添加的消息。

我传递给namedMessageMap的列表将包含我在末尾添加的消息>>为什么不试试看?^^
新建ArrayList();
将创建新对象(涉及内存分配)哪个引用存储在
messageList
变量中,然后将此引用放入映射中(复制引用)。最后,将消息添加到列表实例(对象)中,列表实例(对象)由
messageList
reference访问。两者都是
namedMessageMap.get(queueName)
messageList
将引用同一对象,因此
namedMessageMap.get(queueName)
将返回对更新对象的引用。在Java中,只有对象。没有“内存引用”之类的东西,这是一个你刚刚发明用来迷惑自己的术语。在幕后,实现可能会使用对象的内存,但这是你不应该考虑的,尤其是当它让你无法理解如此简单的代码时。
private final Map<String, List<EventMessage>> namedMessageMap = new HashMap<>();

List<EventMessage> messageList = namedMessageMap.get(queueName);
if (messageList == null) {
      messageList = new ArrayList<>();
      namedMessageMap.put(queueName, messageList);
}

// Add the item in queue
messageList.add(message);