JAXB 强制对集合进行排序

发布于 2024-12-08 13:14:45 字数 112 浏览 0 评论 0原文

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

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

I'm marshaling objects which have fields of type Set. The implementation is unsorted, so the order of resulting XML elements is arbitrary, moreover I got a different order every time I do marshaling.

Is there a way to tell marshaller how to sort a field contents during marshaling?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

初相遇 2024-12-15 13:14:45

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

}

You could take advantage of a SortedSet. If you initialize an instance of a Set on your instance then the JAXB will use that implementation instead of creating a new one:

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;
    }

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文