【问题标题】:how to stop auto order fields in a model class? [duplicate]如何停止模型类中的自动排序字段? [复制]
【发布时间】:2019-05-27 21:31:47
【问题描述】:

我创建了一个模型类(这里只显示构造函数)

public PieceModel(int position, int piece_id) {
    this.position = position;
    this.piece_id = piece_id;
}

然后添加一些数据

list.add(new PieceModel(1, 100));
list.add(new PieceModel(2, 300));
list.add(new PieceModel(3, 600));

然后我将列表转换为字符串并像这样打印

[{"piece_id":100,"position":1},{"piece_id":300,"position":2},{"piece_id":600,"position":3}]

但我需要这样的

[{"position":1,"piece_id":100},{"position":2,"piece_id":200},{"position":3,"piece_id":300}]

请给点建议..

【问题讨论】:

  • 阅读如何使用Comparator 对列表进行排序。 This 会有所帮助。如果您无法正确实施,请在阅读完之后再回来。
  • @Nicholas K 我不认为他在谈论排序。他只是希望属性以他设置的方式出现。
  • 属性顺序是否重要,因为您仍将使用名称访问它?
  • @KiraAG:查看 OP 使用的标签。它清楚地表明排序
  • @Nicholas K 是的,我看到了,但是 OP 的询问另有说明。我会让 OP 决定他想要什么。无论如何,感谢您引用该链接,我学到了一些新东西。

标签: java android list sorting arraylist


【解决方案1】:

这样的?覆盖toString 并重新排列属性?

static class PieceModel {
    private int position;
    private int piece_id;

    public PieceModel(int position, int piece_id) {
        this.position = position;
        this.piece_id = piece_id;
    }

    @Override
    public String toString() {
        return "{" +
                "position=" + position +
                ", piece_id=" + piece_id +
                '}';
    }
}

public static void main(String[] args) {
    List<PieceModel> list = new ArrayList<>();
    list.add(new PieceModel(1, 100));
    list.add(new PieceModel(2, 300));
    list.add(new PieceModel(3, 600));
    System.out.print(list.toString());
}

结果:

[{"position":1,"piece_id":100},{"position":2,"piece_id":200},{"position":3,"piece_id":300}]

【讨论】:

  • 不知道他是如何打印出值的,如果list.toString(),我想覆盖模型类上的toString(),否则,是的,手动打印出来
  • 是的,这就是我需要知道的。它正在工作,现在我可以自定义它。谢谢@nhp
  • 不客气:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多