0

我不确定在使用 arraylist 时它是否会消耗更多和更多的内存。浏览以下代码块时我很困惑:

headerRow = new ArrayList<>();
headerRow.add("");
xlHeader.add(headerRow);

// headerRow = null;                     //<----- This is the line of confusion.
headerRow = new ArrayList<>();

headerRow 是否应该被取消?

添加到的空白字符串对象(“”)会发生什么headerRow

4

5 回答 5

3

headerRow将引用新创建ArrayList的,旧的将注册到垃圾收集。

因此,不需要作废。

还,

headerRow = new ArrayList<>(); // in JDK 7

而不是

headerRow = new ArrayList();

是实例化的正确语法。

于 2013-09-18T09:47:54.453 回答
2

这不是必需的,它将引用新创建的对象。该变量headerRow将引用新创建的ArrayList.

所以你可以直接使用headerRow = new ArrayList();

于 2013-09-18T09:47:00.777 回答
1

你只需使用

headerRow = new ArrayList();

之前不需要取消它,JVM会管理它。

在前两行代码中

List<String> headerRow = new ArrayList<String>();
headerRow = new ArrayList();

那第二行是多余的。没有必要写headerRow = new ArrayList();

由于您已经在前一行初始化。

于 2013-09-18T09:48:59.643 回答
0

我不知道你为什么这样做:

List<String> headerRow = new ArrayList<String>();
// First one is correct; lose the line that follows.
headerRow = new ArrayList();
于 2013-09-18T09:49:15.820 回答
0

此操作对性能没有任何影响。

当我们以控制的形式使用它时,我们可以将 null 设置为引用,以不再执行操作。

例如

   Closable stream = getStream();

  try {
    stream.close();
    stream = null;
  catch(Exception e) {
    log(e);
  } finally {
    if(stream != null) {
      try { stream.close(); } catch(Exception empty) {}
    }
  }
于 2013-09-18T09:53:13.663 回答