はLocale#getAvailableLocales
のソースコードです:
public static Locale[] getAvailableLocales() {
return LocaleServiceProviderPool.getAllAvailableLocales();
}
そして、ここではLocaleServiceProviderPool.getAllAvailableLocales
のソースコードです:
public synchronized Locale[] getAvailableLocales() {
if (availableLocales == null) {
availableLocales = new HashSet<Locale>(getJRELocales());
if (hasProviders()) {
availableLocales.addAll(getProviderLocales());
}
}
Locale[] tmp = new Locale[availableLocales.size()];
availableLocales.toArray(tmp);
return tmp;
}
私たちは、ロケールはハッシュセットに格納されていることをはっきりと見ることができ、注文はありません。メソッドが何らかの順序があることを暗示する可能性があるので、メソッドがロケールの配列を返すことはおそらく誤解を招く可能性があります。
@JBNizetは、自分のコードでロケールの一覧を並べ替えるだけでよいとコメントしました。
メソッドのjavadocは順序付けに何ら保証を提供しないので、それを数えてはいけません。注文したい場合は、配列を自分で並べ替えます。 –