java - 这种情况下重新实例化是如何工作的?

标签 java arraylist data-structures

我正在使用 Java

public class MapsConfusion {
  public static void main(String[] args) {
    HashMap< Integer, ArrayList<String>> map = new HashMap<>();
    for (int i = 0; i < 15; i++){
      ArrayList<String> lst = new ArrayList<>();
      lst.add("something");
      lst.add("something2");
      map.put(i, lst);
    }
    for(int j = 0; j < 11; j++){
      System.out.println(map.get(j));
    }   
  }  
}

它的工作方式是,每次循环时都会创建一个 arraylist。这是我的问题,

考虑指针,当您声明一个新的 Arraylist<> 时每次,您都在创建一个 Arraylist在一个新地址我是正确的吗?

其他问题:列表不是只存在于for loop?范围内吗?那么当我执行另一个(最后一个)for 循环时,仍然 是如何访问的?

最佳答案

1个问题

是的,您总是创建一个新对象,因此创建一个新地址。

有关更多信息,请参阅:https://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html

2个问题

只要至少有一个变量指向它,ArrayList 就会存在。在这种情况下,只要 map 存在并且 main 方法运行。

这里是关于对象生命周期的更多信息:http://www.dummies.com/programming/java/the-life-cycle-of-a-java-object/

关于java - 这种情况下重新实例化是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41920753/

相关文章:

python - 不同的整数组

algorithm - 在循环链表的末尾插入一个节点的时间复杂度?

kotlin - 在 Kotlin 中,是否通过标准库支持栈、队列、堆、树等数据结构?

algorithm - 如何定义一个可以在 O(1) 内获得最小数字的堆栈

java - 创建日历事件时如何创建警报?

java - Spring返回@RequestParam中的记录总数

java - Wildfly 17 : "User-specified log class ' org. apache.commons.logging.impl.Log4JLogger'找不到或无法使用。”使用commons-configuration2

java - 将对象附加到序列化文件

java - 处理映射中的数组列表

java - ArrayList 丢失项目