【前置き】配列とリストについて
プログラミングにおける配列とリストについて、違いをご存知でしょうか?
一般的な配列とは、予め格納するデータの長さが決まっているコレクションであり、
反対にリストは、格納するデータの長さが決まっていないコレクションであります。
例えば、C#言語では以下のように配列とリストの宣言を分けています。
/*配列の宣言方法*/
string[] index = new string[5];
/*リストの宣言方法*/
List<string> index = new List<string>();
Salesforce Apex言語での配列とリストについて
結論から言うとSalesforce Apex言語では、配列とリストどちらもList型を用いて宣言します。
少しややこしいですが、Apexには配列とリストの考え方は存在しますが、
その宣言方法がJavaやC#と多少異なります。
(ApexではJavaやC#と同じようにリスト・配列を宣言することも可能です。)
List型を用いたリストと配列の宣言方法
次に宣言方法を見ていきましょう。
Apexでは以下の書き方で配列・リストを宣言することができます。
JavaやC#を学習したことがある人は少し違和感を覚えるかもしれませんが、
これがApexの特徴として認識しましょう。
/*リストの宣言方法*/
List<String> index = new List<String>();
/*配列の宣言方法*/
List<String> index = new String[5];
リストの宣言方法はJava・C#と変わりませんが、配列の宣言方法はApex独自のものになっています。
もう一つの配列の宣言方法
Apex言語では、配列宣言に対してもう一つの宣言方法があります。
/*もう一つの配列宣言方法*/
String[] index = new String[5];
C#やJavaを学習したことがある人は、こちらの宣言の方が馴染み深いかもしれません。
Apex独自の配列の宣言とJavaやC#をモデルにした配列の宣言どちらでも
Apex言語での動作は同じとなります。
Apex言語での少し変わった配列の挙動
最初に説明したように、配列とは予め格納するデータの長さが決まっているコレクションですが、
Apex言語では配列の長さを変更することができます。
以下のコードの例を見てみましょう。
/*要素数3つの配列を宣言*/
List<String> fruits = new String[3];
fruits[0] = 'apple'; //0番目の要素に 'apple'を代入
fruits[1] = 'banana'; //1番目の要素に 'banana' を代入
System.debug(fruits);
/*
出力結果: DEBUG | {apple, banana, null}
*/
fruits.add('orange'); //fruits配列に 'orange'を追加
System.debug(fruits);
/*
出力結果: DEBUG | {apple, banana, null, orange}
*/
fruits配列に要素を指定して代入する挙動は、JavaやC#と変わりませんが、
配列宣言に対して「.add」を使用することができ、配列の要素数を増やすことができます。
こうなってくると、もはや配列ではなくリストの挙動になっています。
まとめ
Apex言語でのリストはJavaやC#の挙動と変わりませんが、
配列の挙動は、後から要素数を増やすことができます。
少しややこしいですが考え方として
配列の宣言に対して「.add」を使用した時点で、宣言した配列はリストに変わる
という認識で良いと思います。