Java:Java 对 JavaScript localeCompare() 的替代方案是什么?



我正在尝试在Java中对JSONObject数组进行排序。有人能告诉我如何在Java中基于locale进行排序,就像JavaScript的localeCompare()一样?

在JavaScript中,我们可以进行如下区域设置排序,arr.sort( ( a, b ) => a.data[ "nested-name" ].localeCompare(b.data[ "nested-name" ]) )

我想在Java中进行区域比较排序。

您可以使用Collator:

Collator collator = Collator.getInstance();
Arrays.sort(array, (JSONObject o1, JSONObject o2) ->
collator.compare(o1.get("data"), o2.get("data")));

下面是一个完整的示例,其中有一个collator,它使用默认的语言环境来比较基于data属性的JSON对象数组:

import org.json.JSONObject;
import java.text.Collator;
import java.util.Arrays;
public class LocaleCompareTest {
public static void main(String[] args) {
JSONObject a = new JSONObject();
a.put("data", "a");
JSONObject b = new JSONObject();
b.put("data", "b");
JSONObject[] array = new JSONObject[]{b, a};
Collator collator = Collator.getInstance();
Arrays.sort(array, (JSONObject o1, JSONObject o2) ->
collator.compare(o1.get("data"), o2.get("data")));
System.out.println(Arrays.toString(array));
}
}

这会产生以下输出:

[{"data":"a"}, {"data":"b"}]

请参阅Javadoc,了解有关如何为所需的区域设置和排序规则配置排序器的更多信息。

相关内容

  • 没有找到相关文章

最新更新