簡體   English   中英

如何將 StringBuilder[] 轉換為 String[]

[英]How to convert StringBuilder[] to String[]

我有一個 StringBuilder 對象數組,如下所示。

StringBuilder[] sbCmd = new StringBuilder[5];
int cntr = 0;
sbCmd[cntr++].append("add");
sbCmd[cntr++].append("sub");
sbCmd[cntr++].append("mul");
sbCmd[cntr++].append("div");
sbCmd[cntr++].append("mod");

現在我有一個函數,它將字符串數組作為輸入,如下所示。

ConfigureMathOperation(String[] array)
{
  //Do some work
}

我怎么能調用相同的? 我試圖避免使用 String[] ,因為它是不可變的(我有一些敏感數據需要在函數調用后清除)。

我是否必須為存儲在數組中的每個 StringBuilder 對象調用 toString? 示例代碼片段真的很有幫助,因為我是 Java 新手。

例如,我想如下調用,但它不起作用,因為我不知道如何調用每個 StringBuilder 對象。

ConfigureMathOperation(sbCmd.toString());

要直接回答這個問題,您可以使用流輕松地將 StringBuilder[] 轉換為 String[]:

String[] arr = Arrays.stream(sbCmd).map(StringBuilder::toString).toArray(String[]::new);

...但:

我試圖避免使用 String[] ,因為它是不可變的(我有一些敏感數據需要在函數調用后清除)。

你無法避免它。 如果您有一個接受字符串數組的庫函數,那么您必須提供一個字符串數組——這顯然需要使用字符串。

您唯一的其他選擇是分叉庫並刪除字符串的使用。 請注意,這可能是一個耗時且乏味的操作——但這​​並不像確保沒有傳入字符串參數那么簡單(因為庫函數可以輕松調用sb.toString()並獲取字符串。 )

更實用的方法不是擔心字符串會留在內存中,而是在安全、隔離的環境中運行您的代碼,並讓環境完成其工作。

暫無
暫無

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

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