【发布时间】:2017-03-17 00:05:41
【问题描述】:
我必须像这样开发一个简单的代码:
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”方法时,都会在内存中创建一个新的 list1 对象。 我试图找到优化这种行为的最佳方法,我已经以这种方式修改了代码:
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 方法来创建对象。
这是优化代码的最佳方法吗?
提前致谢
【问题讨论】:
-
为了使代码更优雅,我将
varargs参数添加到getList()。供应商在这里没有任何优势,因为每次调用getList()时都会创建一个列表,无论是否使用供应商。
标签: java lambda interface functional-programming