【Salesforce/Apex】String.join()で高速文字列結合(文字列連結)する

Salesforce
この記事は約2分で読めます。

Apexにはガバナ制限があり、Salesforce サーバの最大 CPU 時間は10,000 ミリ秒となっています。つまり10秒以上かかる処理はガバナ制限によるエラーが発生する可能性が増えます。

C#やJavaではStringBuilderクラスを使って高速に文字列結合する方法がありますが、Apexにはそのようなクラスは用意されていません。「+」や「+=」演算子よりも高速に文字列結合ができるString.join()について紹介します。

スポンサーリンク

「+」や「+=」演算子による結合

あくまでサンプルですが、取引先の数が多くなればなるほどガバナ制限のエラーが怖くなってきます。

String str = '';
for( Account acc : [SELECT Name,PersonEmail FROM Account] ){
  str += '名前:' + acc.Name;
  str += 'メール:' + acc.PersonEmail;
  str += ';';
}

文字列結合の回数が多い場合は、次に紹介するString.join()を使ってみましょう。

スポンサーリンク

String.join()を使った高速文字列結合

変数lstをインスタンス化して、そこにaddしていって、最後にString.join()のセパレータ(区切り文字)を空文字にして高速文字列結合してます。

List<String> lst = new List<String>();

// 変数 lst に文字列を追加する
// 例) lst.add('');

String str = String.join(lst, ''); 

セパレータをカンマやタブにすればCSV形式にもできます。

スポンサーリンク

まとめ

文字列結合の回数が少なければ「+」や「+=」演算子で問題ありませんが、回数が多く処理に時間が掛かってくる場合はString.join()関数を使って高速文字列結合しましょう。