Estoy tratando de ordenar la matriz JSONObject en Java . ¿Puede alguien decirme cómo puedo ordenar según la locale en Java de manera similar a localeCompare() de JavaScript?
En JavaScript, podemos ordenar localmente como se muestra a continuación, arr.sort( ( a, b ) => a.data[ "nested-name" ].localeCompare(b.data[ "nested-name" ]) )
Quiero hacer una clasificación comparativa de configuración regional en Java.
Puede utilizar un Collator :
Collator collator = Collator.getInstance(); Arrays.sort(array, (JSONObject o1, JSONObject o2) -> collator.compare(o1.get("data"), o2.get("data"))); Aquí hay un ejemplo completo con un recopilador que usa la configuración regional predeterminada para comparar una matriz de objetos JSON en función de su propiedad de data :
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)); } }Esto produce el siguiente resultado:
[{"data":"a"}, {"data":"b"}]Consulte el Javadoc para obtener más información sobre cómo configurar su intercalador para la configuración regional y las reglas de intercalación deseadas.