Collator クラス
比較や並べ替えに使用できるロケール固有のインスタンスを取得するメソッドが含まれています。getInstance() メソッドを使用して、指定されたロケールの Collator インスタンスを取得し、その Collator を Comparator パラメーターとして list.sort() メソッドに渡します。
名前空間
使用方法
ロケールを区別する並べ替えでは、コードを実行するユーザーごとに異なる結果が生成される場合があります。このため、トリガーや、特定の並べ替え順が必要なコードでは、ロケールを区別する並べ替えを使用しないでください。
例
次の例では、リストに対し、デフォルトの並べ替えを実行し、次に Collator を使用してユーザーのロケールに基づく並べ替えを実行します。
1@IsTest
2 static void userLocaleSort() {
3
4 string userLocale = 'fr_FR';
5
6 User u = new User(Alias = 'standt', Email='standarduser@testorg.com',
7 EmailEncodingKey='UTF-8', LastName='Testing', LanguageLocaleKey='en_US',
8 LocaleSidKey=userLocale, TimeZoneSidKey='America/Los_Angeles',
9 ProfileId = [SELECT Id FROM Profile WHERE Name='Standard User'].Id,
10 UserName='standarduser' + DateTime.now().getTime() + '@testorg.com');
11
12 System.runAs(u) {
13
14 List<String> shoppingList = new List<String> {
15 'épaule désosé Agneau',
16 'Juice',
17 'à la mélasse Galette 5 kg',
18 'Bread',
19 'Grocery'
20 };
21
22 // Default sort
23 shoppingList.sort();
24 Assert.areEqual('Bread', shoppingList[0]);
25
26 // Sort based on user Locale
27 Collator myCollator = Collator.getInstance();
28 shoppingList.sort(myCollator);
29 Assert.areEqual('à la mélasse Galette 5 kg', shoppingList[0]);
30 Assert.areEqual('Bread', shoppingList[1]);
31 Assert.areEqual('épaule désosé Agneau', shoppingList[2]);
32 Assert.areEqual('Grocery', shoppingList[3]);
33 Assert.areEqual('Juice', shoppingList[4]);
34 }
35 }Collator のメソッド
Collator のメソッドは次のとおりです。
getInstance()
現在のユーザーのロケールで Collator インスタンスを取得します。
署名
public static System.Collator getInstance()
戻り値
型: Collator クラス