// 寫法 1
String[] y = list.toArray(new String[0]);
// 寫法 2
String[] y = new String[0];
y = list.toArray(y);
寫法 2 多一次區域變量存儲 (astore) 與載入 (aload),以及多一次陣列分配 (長度 0)。JIT 編譯器通常會內聯優化消除,實際效能差異可忽略不計。
若預估大小接近列表大小,傳入 new String[list.size()] 可避免內部二次分配:
String[] y = list.toArray(new String[list.size()]); // 最佳實踐
若傳入陣列長度 小於 列表大小,JVM 會反射分配新陣列 (較慢);若 大於,會在陣列末尾填充 null (浪費空間)。
日常開發直接用 list.toArray(new String[0]) 簡潔高效;極度敏感場景預分配精確大小。