如何迭代非空字符串?

时间:2015-06-06 11:43:09

标签: java string list

如果它不为空,我需要迭代一些String。我的意思是:

for (String email : partnerEmails.isEmpty() ? new ArrayList<String>()
                    : partnerEmails.split("\\s*,\\s*")) {
    selectedEmails.add(email);
}

我担心的是我正在创建一个新的空list,它占用了一些资源和内存,需要很快收集垃圾。我怎么能避免这种情况?

3 个答案:

答案 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"