sorting - JAXB 强制对集合进行排序

标签 sorting collections jaxb marshalling

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

有没有办法告诉编码器如何在编码期间对字段内容进行排序?

最佳答案

您可以利用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;
    }

}

关于sorting - JAXB 强制对集合进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7686859/

相关文章:

python - 如何对 2D 依赖表进行排序/排序

javascript - 对日期数组与字符串混合进行排序

java - JAXB 这会导致无限深的XML

c - 按 2 个字段对结构体数组进行插入排序

scala - 检查集合中包含的所有元组中的给定元素是否相等

java - 哈希表的优点

java - 如何更快地从 map 返回键和值?

java - 类不是使用 maven-jaxb2-plugin 从 xsd 生成的吗?

java - 您将如何使用 JAXB 解码以下内容

java - 对通用数据结构数组进行排序