如果它不为空,我需要迭代一些String。我的意思是:
for (String email : partnerEmails.isEmpty() ? new ArrayList<String>()
: partnerEmails.split("\\s*,\\s*")) {
selectedEmails.add(email);
}
我担心的是我正在创建一个新的空list
,它占用了一些资源和内存,需要很快收集垃圾。我怎么能避免这种情况?
答案 0 :(得分:1)
您只能输入循环if ((null != partnerEmails) && !partnerEmails.isEmpty())
。
如果你想保留你的循环,你可以定义一个private static ArrayList<String> EMPTY_LIST = new ArrayList<String>();
并迭代这个列表。
答案 1 :(得分:1)
在迭代前验证为空:
if (!partnerEmails.isEmpty())
for (String email : partnerEmails.split("\\s*,\\s*"))
selectedEmails.add(email);
答案 2 :(得分:1)
1)API documentation解决了每次创建新对象的问题(不是你应该担心这种微优化)。
2)你不需要迭代器。相反,请使用以下代码:
'http://example.com/helllo-there'.replace(
RegExp('^http://(lists\.|www\.)?example\.com/'),
'https://$1example.com/')
// Outputs: "https://example.com/helllo-there"