0
我要開發一個簡單的代碼是這樣的:Java供應商可以優化對象實例化過程嗎?
public class TestSupplier {
public static void main(String[] args) {
// TODO Auto-generated method stub
TestSupplier ts1 = new TestSupplier();
List<String> lman = ts1.getList(new String[]{"Bob","Tom","Jack","Rob"});
List<String> lwom = ts1.getList(new String[]{"Barbara","Francesca","Jenny","Sim"});
List<String> ldog = ts1.getList(new String[]{"Ciuffy","Red","Fido"});
}
public List<String> getList (String[] n) {
List<String> list1 = new ArrayList<String>();
for (int i = 0; i < n.length ; i++) {
list1.add(n[i]);
}
return list1;
}
}
每次程序調用「的GetList」方法的新列表1對象在內存中創建。 我試圖找到優化此行爲的最好方式,我有修改這樣的代碼:
public class TestSupplier {
Supplier<List<String>> lsup = ArrayList<String>::new;
public static void main(String[] args) {
// TODO Auto-generated method stub
TestSupplier ts1 = new TestSupplier();
List<String> lman = ts1.getList(new String[]{"Bob","Tom","Jack","Rob"});
List<String> lwom = ts1.getList(new String[]{"Barbara","Francesca","Jenny","Sim"});
List<String> ldog = ts1.getList(new String[]{"Ciuffy","Red","Fido"});
}
public List<String> getList (String[] n) {
List<String> list1 = lsup.get();
for (int i = 0; i < n.length ; i++) {
list1.add(n[i]);
}
return list1;
}
}
我已創建一個供應商的實例變量,並在「的GetList」的方法,我只是叫他GET方法來創建對象。
難道這是優化代碼的最佳方法嗎?
在此先感謝
爲了讓代碼更加優雅,我會在'getList()'中放置'varargs'參數。供應商在這裏沒有任何優勢,因爲每次調用getList()時都會創建一個列表,而不管供應商是否被使用。 – Kayaman