gpt4 book ai didi

java - Locale.getAvailableLocales() 的排序

转载 作者:行者123 更新时间:2023-12-02 12:04:42 29 4
gpt4 key购买 nike

调用 Locale.getAvailableLocales() 按特定顺序列出语言环境(例如:“en_US”是第一个英语语言环境)。

这对我来说效果很好,但我想知道:

这个排序集在哪里?我尝试跟踪源代码,但从检索原始数据的点开始:HashMap 中的String。具体来说:“sun.text.resources.FormatData”,直到列表为returned。 ,我找不到订购地点。(请注意,在原始字符串数据中,“en_US”不是第一个英语区域设置)。

谢谢。

最佳答案

这是 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 评论的那样,您最好只对自己的代码中的语言环境列表进行排序。

关于java - Locale.getAvailableLocales() 的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46986770/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com