#sorting #collections #jaxb #marshalling
#сортировка #Коллекции #jaxb
Вопрос:
Я сортирую объекты, у которых есть поля типа Set. Реализация не отсортирована, поэтому порядок результирующих XML-элементов произвольный, более того, я получаю разный порядок каждый раз, когда выполняю маршалинг.
Есть ли способ сообщить маршалл, как сортировать содержимое поля во время маршалинга?
Ответ №1:
Вы могли бы воспользоваться SortedSet
. Если вы инициализируете экземпляр a Set
в своем экземпляре, JAXB будет использовать эту реализацию вместо создания новой:
package forum7686859;
import java.util.Set;
import java.util.TreeSet;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Root {
//private Set<String> children = new HashSet<String>();
private Set<String> children = new TreeSet<String>();
public Set<String> getChildren() {
return children;
}
public void setChildren(Set<String> children) {
this.children = children;
}
}
Комментарии:
1. Нет, это не то, чего я действительно хочу. Я НЕ хочу, чтобы моя коллекция всегда сортировалась, по своей природе это несортированные наборы. Все, что мне нужно, это обеспечить одинаковый порядок элементов в выводе XML для одной и той же коллекции.