簡體   English   中英

如何遍歷非空字符串?

[英]How to iterate over a non-empty string?

如果它不為空,我需要遍歷一些String。 我的意思是:

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

我擔心的是,我正在創建一個新的空list ,該list需要一些資源和內存,並且需要盡快進行垃圾回收。 我該如何避免呢?

if ((null != partnerEmails) && !partnerEmails.isEmpty())時才可以進入循環。 如果要保持循環,可以定義一個private static ArrayList<String> EMPTY_LIST = new ArrayList<String>(); 然后遍歷此列表。

在迭代之前驗證空值:

if (!partnerEmails.isEmpty())
    for (String email : partnerEmails.split("\\s*,\\s*"))
        selectedEmails.add(email);  

1) Collections.emptyList()解決了每次創建新對象的問題(而不是您應該擔心這種微優化)。

2)您不需要迭代器。 而是使用以下代碼:

List<String> emails = partnerEmails.isEmpty()
                    ? Collections.emptyList()
                    : Arrays.asList(partnerEmails.split("\\s*,\\s*"));
selectedEmails.addAll(emails);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM