【问题标题】:Change Arraylist order by specific value按特定值更改 Arraylist 顺序
【发布时间】:2019-06-20 18:21:40
【问题描述】:

我有 json 对象类型 arraylist,而 jsonobject 包含字符串和布尔值。现在我的要求是按照具有真实值的顺序设置 arraylist。获取顶部包含真实值的所有 jsonobject。那么我该如何更改 arraylist 顺序按特定值。 假设我有列表 {matched:true},{matched:false},{matched:true},{matched:false},{matched:false},{matched:true}。 但我想要清单 {匹配:真},{匹配:真},{匹配:真},{匹配:假},{匹配:假},{匹配:假}。 使用语言 java。

【问题讨论】:

  • 能否至少指定语言(Java 或 Kotlin)并举一个 JSON 字符串示例?
  • edit 包含新信息的问题,因为 cmets 不允许格式化并使代码和 JSON 更难阅读。

标签: java android android-json


【解决方案1】:

在 Kotlin 中:

val list = arrayListOf(false, true, false, true, false)
    list.sortBy { it == false }

输出:

[true, true, false, false, false]

下面是一个例子,如果我们想从一个对象中排序:

// Your model class
class SomeObject(var value: String, var state: Boolean)
...

val list = arrayListOf<SomeObject>(
        SomeObject("some value", false),
        SomeObject("some value2", true),
        SomeObject("some value3", false),
        SomeObject("some value4", false),
        SomeObject("some value5", true))

    list.sortBy { it.state == false }

在 Java 中:

// Model -> 

public class SomeObject {

private String name;
private Boolean state;

public SomeObject(String name, Boolean state) {
    this.name = name;
    this.state = state;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public Boolean getState() {
    return state;
}

public void setState(Boolean state) {
    this.state = state;
}
}

...
    ArrayList<SomeObject> list = new ArrayList<>();
    list.add(new SomeObject("some value", false));
    list.add(new SomeObject("some value2", true));
    list.add(new SomeObject("some value3", false));
    list.add(new SomeObject("some value4", false));
    list.add(new SomeObject("some value5", true));

    list.sort((o1, o2) -> Boolean.compare(!o1.getState(), !o2.getState()));
    list.forEach((it) -> System.out.println(it.getState()));

输出:

[true, true, false, false, false]

【讨论】:

  • 我如何在 java 中做到这一点?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
  • 1970-01-01
  • 2014-08-17
相关资源
最近更新 更多