Pregunta

Lo que estoy buscando que hacer es sorta una lista de Java o mapa en el orden de los artículos están en un archivo XML.

Por ejemplo

Tengo una lista de nombres de funciones como tal:

  1. functionOne
  2. functionThree
  3. functionTwo

Las miradas de archivos XML como este:

<xml>
  <function>functionOne</function>
  <function>functionTwo</function>
  <function>functionThree</function>
</xml>

Así que me gustaría para ordenar la lista por lo que los nombres de las funciones son tan así:

  1. functionOne
  2. functionTwo
  3. functionThree

Ahora estoy tratando de hacer esto para las variables, así, por lo que hay alrededor de 500 artículos '' únicos.

¿Alguien tiene alguna idea de cómo puedo ir haciendo esto? Ahora para el archivo que determina que un orden no tiene que ser XML es justo lo que más uso, que puede ser cualquier cosa que puede hacer el trabajo.

Gracias de antemano por su tiempo.

¿Fue útil?

Solución

En primer lugar, analizar el archivo XML para construir un Map<String,Integer> que mapea los nombres a su posición ordinal.

A continuación, se necesita un comparador personalizado:

public class XMLComparator implements Comparator<String> {
    private Map<String,Integer> order;

    public XMLComparator(Map<String,Integer> desiredOrder) {
        order = desiredOrder;
    }

    public void compare(String s1, String s2) {
        return order.get(s1) - order.get(s2);
    }

}

A continuación, se aplica a la lista de nombres de variables:

Collections.sort(variableNames, new XMLComparator(previouslyCreatedMap));

Probablemente hay algunos casos extremos a cuidar, pero esa es la idea general.

Otros consejos

Yo sólo sería utilizar un analizador XML para leer los valores del archivo XML en un List fin en lugar de tomar un List diferente y clasificarlos de acuerdo con el orden en que se encuentran en el archivo XML. Esto es suponiendo que el List que estamos hablando de clasificación contendría todos los valores que se encuentran en el archivo XML.

Si sólo puede contener un subconjunto de los valores en el archivo XML, una opción sería la de primera lectura en todos los valores del XML y luego usar guayaba 's Ordering.explicit (Lista) :

Ordering<String> orderFromXml = Ordering.explicit(readListFromXml());
List<String> otherList = ...
Collections.sort(otherList, orderFromXml);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top