JAXB强制排序集

时间:2011-10-07 11:54:06

标签: sorting collections jaxb marshalling

我正在编组具有Set类型字段的对象。实现是未排序的,因此生成的XML元素的顺序是任意的,而且每次进行编组时我都会得到不同的顺序。

有没有办法告诉marshaller如何在编组过程中对字段内容进行排序?

1 个答案:

答案 0 :(得分:0)

您可以利用SortedSet。如果在实例上初始化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;
    }

}